Включение приложения Django в url.py приводит к 404
У меня есть следующий код в urls.py в проекте mysite.
/mysite/urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^gallery/$', include('mysite.gallery.urls')),
)
Это приводит к 404 страницам, когда я пытаюсь получить доступ к URL-адресу, установленному в gallery/urls.py.
/mysite/gallery/urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^gallery/browse/$', 'mysite.gallery.views.browse'),
(r'^gallery/photo/$', 'mysite.gallery.views.photo'),
)
Ошибка 404
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
^gallery/$
The current URL, gallery/browse/, didn't match any of these.
Кроме того, сайт размещен на сервере медиа-храмов (dv) и использует mod_wsgi
Ответы
Ответ 1
Удалите $
из регулярного выражения основного urls.py
urlpatterns = patterns('',
(r'^gallery/', include('mysite.gallery.urls')),
)
Вам не нужно gallery
в включенном Urlconf.
urlpatterns = patterns('',
(r'^browse/$', 'mysite.gallery.views.browse'),
(r'^photo/$', 'mysite.gallery.views.photo'),
)
Прочтите django docs для получения дополнительной информации
Обратите внимание, что регулярные выражения в этом примере не имеют символа соответствия $
(конец строки), но включают завершающую косую черту. Всякий раз, когда Django сталкивается с include()
, он отбрасывает любую часть URL-адреса, сопоставленного с этой точкой, и отправляет оставшуюся строку в включенный URLconf для дальнейшей обработки.