Django에서 URLconf 및 include()의 공동 작업 방법

2348 단어
포획된 파라미터가include ()와 어떻게 협동하는지
포함된 URLconf는 다음과 같은 parent URLconfs로부터 캡처된 매개 변수를 수신합니다.

# root urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^(?P\w+)/blog/', include('foo.urls.blog')),
)

# foo/urls/blog.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^$', 'foo.views.blog_index'),
 (r'^archive/$', 'foo.views.blog_archive'),
)


이 예에서 포획된username 변수는 포함된 URLconf에 전달되며, 그 URLconf의 모든 보기 함수에 전달됩니다.
캡처된 이 매개변수는 항상 포함된 URLconf의 각 행에 전달되며, 해당 행에 해당하는 뷰에 이러한 매개변수가 필요한지 여부에 상관없습니다.따라서 이 기술은 전달된 파라미터가 확실히 필요할 때만 유용해 보인다.추가 URLconf가 include()와 함께 작동하는 방법
비슷한 것은 사전을 통해 일반적인 보기에 추가 URLconf 옵션을 전달할 수 있는 것과 같다.이렇게 하면 URLconf가 포함된 줄마다 추가 매개 변수를 받을 수 있습니다.
예를 들어, 다음 URLconf 두 개는 기능적으로 동일합니다.
첫 번째:

# urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^blog/', include('inner'), {'blogid': 3}),
)

# inner.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^archive/$', 'mysite.views.archive'),
 (r'^about/$', 'mysite.views.about'),
 (r'^rss/$', 'mysite.views.rss'),
)


두번째

# urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^blog/', include('inner')),
)

# inner.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^archive/$', 'mysite.views.archive', {'blogid': 3}),
 (r'^about/$', 'mysite.views.about', {'blogid': 3}),
 (r'^rss/$', 'mysite.views.rss', {'blogid': 3}),
)


이 예는 포획된 매개 변수와 마찬가지로 (이전 절에서 설명한 바와 같이) 추가 옵션은 항상 포함된 URLconf의 줄마다 전달됩니다. 그 줄에 대응하는 보기가 유효한 매개 변수로 이 옵션을 받아들일지 여부에 관계없이. 따라서이 기술은 전달된 추가 파라미터가 확실히 필요할 때만 유용해 보인다.이 때문에, 이 기술은 당신이 제시한 옵션을 추가로 받아들일 수 있는 모든 URL conf와 관련이 있다고 확신할 때만 효과가 있습니다.

좋은 웹페이지 즐겨찾기