Джанго URL дает ошибку 404
Django выдает мне ошибку 404 всякий раз, когда я пытаюсь получить доступ к "blog/" на моем сайте, но я определил URL-адреса, которые я хочу, и они должны соответствовать этому.
Основные urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
from blog import views
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'mySiteProject.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
)
blog.urls.py:
from django.conf.urls import patterns,url
from blog import views
urlpatterns = patterns(
url(r'^$',views.index,name='index')
)
404 страница:
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/blog/
Using the URLconf defined in mySiteProject.urls, Django tried these URL patterns, in this order:
^admin/
The current URL, blog/, didn't match any of these.
Структура сайта:
mySiteProject
blog
admin.py
models.py
tests.py
views.py
urls.py
__init__.py
mySiteProject
wsgi.py
settings.py
urls.py
__init__.py
manage.py
db.sqlite3
Установленные приложения:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog'
)
1 ответ
Решение
patterns
в качестве первого аргумента требуется префикс, за которым следует ноль или более аргументов. Итак, это:
urlpatterns = patterns(url(r'^$',views.index,name='index')) # won't work
в blog.urls.py
должен выглядеть так:
urlpatterns = patterns('', url(r'^$', views.index, name='index')) # now has a prefix as first argument
В своем нынешнем состоянии patterns
функция в blog.urls.py
вернет пустой pattern_list
, Который означает, что url(r'^blog/', include('blog.urls'))
не вернет никаких шаблонов.