|
Оглавление
|
Если вы планируете использовать ваш код в нескольких 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}),
)
Подобно случаю с захваченными параметрами (которые мы рассматривали ранее), дополнительные параметры будут всегда передаваться каждой строке подключенного набора привязок, независимо от того, может ли функция представления правильно обработать такие параметры. По этой причине, эта методика полезна только в случае, когда вы уверены, что каждое представление в подключенном наборе привязок может принять передаваемые параметры. |
Увидели ошибку?
Выделите её мышкой и нажмите
-
Обработано:
1049
49
130
71
Версия книги
1.0
2.0
Версия 2.0 в процессе перевода!
Мой луч
Многообразие света
Полезное
Актуальные вакансии,
Python работа
для python-разработчиков.
Скачать в формате
CHM от 2 сентябряЗаказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта. Чем чаще заказываете — тем больше перевожу. Русская группа
Ускорить процесс перевода!
R130494980980
Z425285133788 E112528079659 U327380922061 Книга помогла реализовать:
|
| © 2008-2009 Ruslan Popov @ gmail.com | Powered by Django 1.1 beta 1 SVN-11114 |