Страница не найдена 404 на сайте Django?
Я следую учебнику на сайте Django, чтобы создать простое приложение для опроса. Однако Django не может разрешить "/ / 127.0.0.1: 8000/polls", хотя я определил регулярное выражение в mySite/urls.py - ... Я делаю это в virtualenv, с последней установленной Django (1.7).
mySite/urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^polls/', include('polls.urls')),
)
mySite/polls/urls.py:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
)
mySite/polls/views.py:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
mySite/settings.py:
...
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',
)
....
ROOT_URLCONF = 'mySite.urls'
ошибка Я получение:
Using the URLconf defined in mySite.urls, Django tried these URL patterns, in this order: ^admin/
The current URL, polls, didn't match any of these.
11 ответов
У меня была та же проблема.
оказывается, я был смущен из-за нескольких каталогов с именем "mysite".
Я неправильно создал urls.py файл в корневом каталоге" mysite " (который содержит "manage.py"), затем вставляется код с веб-сайта.
чтобы исправить это, я удалил этот файл, зашел в каталог mysite / mysite (который содержит "settings.py"), изменил существующий "urls.py" файл, и заменил код на учебник код.
в двух словах, убедитесь, что ваш urls.py файл находится в правильном каталоге.
Django не удалось решить 127.0.0.1:8000/polls
потому что конфигурация url определена как r'^polls/'
.
обычный обходной путь:
mySite/urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^polls/', include('polls.urls')),
)
Примечание:
Всякий раз, когда Django встречает include (), он отсекает любую часть URL-адреса, совпадающую до этого момента, и отправляет оставшуюся строку включенному URLconf
для дальнейшего обработка.
mySite/polls/urls.py:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('polls.views',
url(r'^$', 'index', name='index'),
)
Примечание: вместо того, чтобы вводить это для каждой записи в urlpatterns, вы можете использовать первый аргумент функции patterns (), чтобы указать префикс для применения к каждой функции представления.
Ответ, Если
если вы хотите получить доступ к 127.0.0.1:8000/polls
Примечание: без задней косой черты
использовать url на основе просмотра
url(r'^polls', 'polls.views.index', name='index'),
теперь вы можете получить доступ 127.0.0.1:8000/polls
без Слэша.
вы получаете доступ к http://yourdomain.com/, и у вас нет URL-адреса, определенного для "/".
у вас есть два варианта:
Если вы хотите получить доступ к странице индекса вашего приложения опросов, вы должны ввести URL: yourdomain.com/polls
-
вы также можете изменить вас mySite/urls.py файл для доступа из just yourdomain.com
from django.conf.urls import patterns, include, url from django.contrib import admin urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), url(r'^$', include('polls.urls')), )
чтобы сделать ответ ясным для начинающих, у которых есть эта проблема, следуя учебнику, корневой URLconf проекта находится в той же папке, что и settings.py а именно:
mysite/mysite/urls.py
просто убедитесь, что импорт "включить". Код выглядит так:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^polls/', include('polls.urls')),
]
Так, в mysite/mysite/settings.py:
строка должна быть:
ROOT_URLCONF = ' mysite.URL-адреса'
вам не нужно создавать новый корневой URLconf.
в зависимости от того, где вы положили свой корень urls.py, вы устанавливаете свой ROOT_URLCONFIG соответственно, если он у вас есть в самой внешней папке, содержащей manage.py тогда "urls" в порядке. если у вас есть это в какой-то другой папке, то вы должны это сделать ".urls"
кредит для ответа на jerryh91
для получения дополнительной информации о том, как он работает, проверить как Django обрабатывает запрос
вы ставите urls.py папка во внешнюю папку MySite, вы должны поместить ее во внутреннюю, чтобы ее не было mySite/urls.py, но mySite/mySite/urls.py:
столкнулся с той же ошибкой, когда я сделал учебник
на самом деле проблема в том, что вы не заметили, что mysite/urls.py и polls/urls.py есть два разных файла и вы изменили polls/urls.py вместо того, чтобы положить mysite/urls.py в urls.py входите ...папка mysite\mysite.
в моем случае, это был тупые ошибка. Я хотел интегрировать плагин django-tinymce и протестировать его. Так следуют этой руководство, я сделал шаг 3 и экспортировать переменную в путь. Когда сервер снова запустился, я получил не найденную ошибку, показывая сообщение:
используя URLconf, определенный в testtinymce.URL-адреса, Джанго попробовала эти URL-адреса паттерны, в таком порядке: ....
но я не знал, что именно это был, пока я не вспомнил экспорт переменной DJANGO_SETTINGS_MODULE
под управлением unset DJANGO_SETTINGS_MODULE
в терминале решена моя проблема. Надеюсь, это тоже кому-то поможет.
добавьте нижеприведенную строку в свой Mysite/urls.py
url(r'^$', views.index, name='index'),
и проверить. Если вы правильно создали свой проект, он должен работать. Иначе что-то подобное выше, возможно, имело бы более одного файла, настолько запутанного.
2017-10-05_12: 03 ~ / mysite / mysite
$ vi urls.py
2017-10-05_12: 04 ~ / mysite / mysite
$ компакт. ./..
2017-10-05_12: 04 ~
$ MV mysite SENSIBLE_NAME_DJANGO_ROOT
from django.conf.urls import include, url
from django.contrib import admin
from polls import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^polls/', include('polls.urls', namespace='polls')),
url(r'^$', views.index, name='index'),
]