Django - Как использовать UrlConfs с папкой приложений?

StackOverflow https://stackoverflow.com/questions/4540013

  •  13-10-2019
  •  | 
  •  

Вопрос

Я следую урок на веб -сайте 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top