2017-11-12 3 views
0

를 호출되지 않습니다 :장고 URLconf에서 콜백 함수 객체가이 읽기 URLconf를 도입 할 때 내가</p> <p><a href="https://docs.djangoproject.com/en/1.11/intro/overview/" rel="nofollow noreferrer">Django at a glance | Django documentation | Django</a>에 장고를 learing하고

이 앱 URL을 디자인하려면, 당신은 URLconf라는 파이썬 모듈을 생성 . 앱의 목차는 URL 패턴과 Python 콜백 함수 간의 간단한 매핑을 포함합니다.

그럼에도 불구하고 콜백 함수는 호출되지 않습니다.

mysite/news/urls.py 
from django.conf.urls import url 
from . import views 
urlpatterns = [ 
    url(r'^articles/([0-9]{4})/$', views.year_archive), 
] 
print('callback funtion:',views.year_archive) 

출력 :

callback function: <function views.year_archive at 0x1039611e0> 

그래서 호출되지 않은 연료 소모량 객체입니다.

전화를 걸려면 views.year_archive()이어야한다고 생각합니다.

호출되지 않으면 어떻게 작동합니까? 부모 클래스에서 처리 할 장식자를 가정합니다. 내가 LocaleRegexProvider, RegexURLPatterndjango.urls.resolvers | Django documentation | Django을 탐험에 파고

elif callable(view): 
     return RegexURLPattern(regex, view, kwargs, name) 

:

나는 열쇠 문이 urldjango.conf.urls | Django documentation | Django

의 소스 코드를 확인합니다. 콜백 함수를 호출 할 수있는 적합한 코드가 없습니다. views.year_archive

작동 원리는 무엇입니까?

+0

오류가 있습니까? Coz'DEBUG = True' Django는 요청한 URL이 어떤 패턴과도 일치하지 않는다고 말해야합니다. 그래서 분석을 시작할 위치를 처음부터 정의 할 수 있습니다. 그리고 함수는 객체'views.year_archive'처럼 괄호없이 전달되어야합니다. 그러면 coz가 결과 콜백을 전달할 것입니다. –

답변

2

Django는 주어진 URL 패턴에 대한 요청이있을 때마다 자동으로 콜백 뷰 함수를 호출합니다.

가 어떻게 작동하는지 이해하기 위해서,이 예를 살펴 : 장고의 url 기능의 작동 방식을

>>> def a(): 
     print("Called function a") 

>>> def b(): 
     print("Called function b") 

>>> def c(callback): 
     # call the callback function like this 
     callback() 

>>> c(a) 
Called function a 
>>> c(b) 
Called function b 

기본적으로,이입니다.

+0

귀하의 블로그는 고품질의 제품입니다. –