Django - Как использовать UrlConfs с папкой приложений?
Вопрос
Я следую урок на веб -сайте Django, но я пытаюсь расширить его. Мне нравится организационная схема размещения всех ваших приложений в папку «приложения». Я пытаюсь выяснить правильный способ включить urls.py, чтобы все было связано.
Вот мой root urls.py:
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^polls/', include('apps.polls.urls')),
(r'^admin/', include(admin.site.urls)),
)
Вот мой urls.py в приложениях/опросах/urls.py:
from django.conf.urls.defaults import *
urlpatterns=patterns('polls.views',
(r'^polls/$', 'index'),
(r'^polls/(?P<poll_id>\d+)/$', 'detail'),
(r'^polls/(?P<poll_id>\d+)/results/$', 'results'),
(r'^polls/(?P<poll_id>\d+)/vote/$', 'vote'),
)
Как это правильный способ сделать это? Спасибо!
Решение
То, как у вас есть в настоящее время настраивается ... URL -адреса для опросов будут:
http://your.url.here/polls/polls/235/results/
Это, вероятно, не то, что вы хотите. А include
функция в urlpatterns
в корневом файле urls.py указывает "polls/"
как префикс для всех urlpatterns
В приложении опросов. Поэтому в файле опросов/urls.py вы не должны указывать "polls/"
Префикс снова, так как это приведет к дублирующим префиксам.
Другие советы
Как вы управляете экземплярами Django? Если у вас есть несколько Vhosts, настроенные в Apache, то каждый экземпляр Django в /приложениях имеет свой собственный urls.py.
Я заставил это работать, делая это:
urlpatterns=patterns('polls.views',
(r'^$', 'index'),
(r'^(?P<poll_id>\d+)/$', 'detail'),
(r'^(?P<poll_id>\d+)/results/$', 'results'),
(r'^(?P<poll_id>\d+)/vote/$', 'vote'),
)
Я думаю, что часть опросов заботится в корне UrlConf