Дополнительные параметры в конфигурации URL и механизм include()
Во включаемую конфигурацию URL можно передавать дополнительные параметры обычным образом - в виде словаря. Но при этом дополнительные параметры будут передаваться каждой строке включаемой конфигурации.
Например, следующие два набора конфигурации URL функционально эквивалентны.
Первый набор:
tt urls. ру
from django.conf.urls.defaults import *
urlpatterns = patternsC’,
(r’~blog/’, include(‘inner’), {‘blogid’: 3}),
)
tt inner, py
from django.conf.urls.defaults import *
urlpatterns = patternsC’,
(r’~archive/$’, ‘mysite.views.archive’), (r’~about/$’, ‘mysite.views.about’), (r’~rss/$\ ‘mysite.views, rss’),
)
Второй набор:
tt urls. py
from django.conf.urls.defaults import *
urlpatterns = patternsC’,
(r’~blog/\ include(‘ inner’)),
)
tt inner, py
from django.conf.urls.defaults import *
urlpatterns = patternsC’,
(r’~archive/$’, ‘mysite.views.archive’, {‘blogid’: 3}), (r’~about/$’, ‘mysite.views.about’, {‘blogid’: 3}), (r’~rss/$’, ‘mysite.views.rss’, {‘blogid’: 3}),
)
Как и сохраняемые параметры (см. предыдущий раздел), дополнительные параметры всегда передаются каждой строке включаемой конфигурации вне зависимости от того, допустимы ли они для указанной в этой строке функции представления. Поэтому описанная техника полезна лишь в том случае, когда вы уверены, что любое представление, упоминаемое во включаемой конфигурации, принимает дополнительные параметры, которые ей передаются.
Источник: Головатый А., Каплан-Мосс Дж. Django. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: Символ- Плюс, 2010. - 560 е., ил.