|
Table of contents
|
Если вы планируете использовать ваш код в нескольких Django сайтах, вам следует переработать ваш файл со схемой URL таким образом, чтобы он позволял включать другие схемы. В любом случае ваша схема может «подключать» другие схемы. По существу происходит «внедрение» набора URL после этой команды. Например: from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^weblog/', include('mysite.blog.urls')),
(r'^photos/', include('mysite.photos.urls')),
(r'^about/$', 'mysite.views.about'),
)
Здесь есть важный момент: регулярные выражения в этом примере,
которые указывают на Продолжая работу над нашим примером [11] : from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^(\d\d\d\d)/$', 'mysite.blog.views.year_detail'),
(r'^(\d\d\d\d)/(\d\d)/$', 'mysite.blog.views.month_detail'),
)
Используя эти две схемы URL, покажем как будут обработаны тестовые запросы:
Подключенный набор привязок получает любые параметры от родительского набора, например: # root urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^(?P<username>\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'),
)
В этом примере, захваченная переменная Следует отметить, что захваченные параметры будут всегда передаваться каждой строке подключенного набора привязок, независимо от того, принимает ли представление в этой строке такие параметры. По этой причине, эта методика полезна только в случае, когда вы уверены, что каждое представление в подключенном наборе привязок может принять передаваемые параметры. Аналогично, вы можете передавать дополнительные параметры в наборе привязок в подключаемые наборы, подобно тому, как такие параметры передаются в обычное представление — в виде словаря. Как только вы сделаете это, каждая строка подключенного набора получит эти параметры. Например, следующие два набора привязок функционально идентичны. Первый: # 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}),
)
Подобно случаю с захваченными параметрами (которые мы рассматривали ранее), дополнительные параметры будут всегда передаваться каждой строке подключенного набора привязок, независимо от того, может ли функция представления правильно обработать такие параметры. По этой причине, эта методика полезна только в случае, когда вы уверены, что каждое представление в подключенном наборе привязок может принять передаваемые параметры. |
Found misprint?
Select it with the mouse and hit Enter
-
Processed:
33
1
199
25
The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!
We are glad to hear your questions, comments or suggestions!
(Open in new tab)
Users number: 601
Русская группа
Ускорить процесс перевода!
ЯМ:41001223475816
|
| © 2008-2012 Ruslan Popov @ gmail.com | Powered by Django 1.2.5 |