Страница не найдена 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/опросы/urls.py:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
)
MySITE/опросы/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.
Ответы
Ответ 1
У меня была та же проблема.
Оказывается, я был сбит с толку из-за нескольких каталогов с именем "mysite".
Я неправильно создал файл urls.py в корневом каталоге "mysite" (который содержит "manage.py" ), затем вставляется в код с веб-сайта.
Чтобы исправить это, я удалил этот файл, зашел в каталог mysite/mysite (который содержит "settings.py" ), изменил существующий файл "urls.py" и заменил код кодом учебника.
Вкратце, убедитесь, что ваш файл urls.py находится в правильном каталоге.
Ответ 2
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/опросы/urls.py:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('polls.views',
url(r'^$', 'index', name='index'),
)
Примечание. Вместо того, чтобы вводить это для каждой записи в urlpatterns, вы можете использовать первый аргумент функции pattern(), чтобы указать префикс для применения к каждой функции представления.
Ответ Если
Если вы хотите получить доступ к 127.0.0.1:8000/polls
Примечание: без конечной косой черты
использовать ориентированный на просмотр URL
url(r'^polls', 'polls.views.index', name='index'),
Итак, теперь вы можете получить доступ к 127.0.0.1:8000/polls
без косой черты.
Ответ 3
Доступ к http://yourdomain.com/, и у вас нет URL-адреса, определенного для "/".
У вас есть два варианта:
-
Если вы хотите получить доступ к странице индекса вашего опроса, вам нужно ввести URL-адрес: yourdomain.com/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'^$', include('polls.urls')),
)
Ответ 4
Чтобы сделать ответ понятным для новичков, у которого есть эта проблема, следуя руководству, корневой URL-адрес проекта - это тот, который находится в той же папке, что и 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.urls'
Вам не нужно создавать новый корневой URL-адрес.
Ответ 5
В зависимости от того, где вы поместите свой ROOT urls.py, вы соответственно устанавливаете ROOT_URLCONFIG, если у вас есть его в самой внешней папке, содержащей manage.py, тогда "urls" в порядке. если у вас есть это в другой папке, тогда вам нужно сделать ".urls"
Кредит за ответ jerryh91
Для получения дополнительной информации о том, как это работает, отметьте Как Django обрабатывает запрос
Ответ 6
Вы помещаете папку urls.py во внешнюю папку MySite, вы должны положить ее во внутреннюю, чтобы ее не mySite/urls.py, а mySite/mySite/urls.py:
столкнулся с той же ошибкой, когда я сделал учебник
Ответ 7
Другой способ получить доступ к 127.0.0.1:8000/polls
- перенаправить браузер при доступе к 127.0.0.1:8000
. Это делается путем редактирования .../mysite/mysite/urls.py
следующим образом:
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'),
]
Ответ 8
На самом деле проблема в том, что вы не заметили, что
mysite/urls.py и polls/urls.py - это два разных файла, и вы изменили опросы /urls.py вместо того, чтобы поместить mysite/urls.py в файл urls.py в... mysite\mysite.
Ответ 9
В моем случае это была глупая ошибка. Я хотел интегрировать плагин django-tinymce и протестировать его. Поэтому, следуя этому руководству, я сделал шаг 3 и экспортировал переменную в путь. Когда сервер снова запустился, я получил не найденную ошибку, показывая сообщение:
Используя URLconf, определенный в testtinymce.urls, Django попробовал эти URL шаблонов в этом порядке:....
Но я не знал, что именно было, пока не вспомнил, что экспортировал переменную DJANGO_SETTINGS_MODULE
running unset DJANGO_SETTINGS_MODULE
в терминале решена моя проблема. Надеюсь, что это тоже помогает кому-то.
Ответ 10
Добавьте строку ниже в Mysite/urls.py
url(r'^$', views.index, name='index'),
и проверьте. Если вы правильно создали свой проект, он должен работать. Возможно, что-то вроде выше, возможно, случилось с несколькими путями.
Ответ 11
2017-10-05_12: 03 ~/mysite/mysite
$ vi urls.py
2017-10-05_12: 04 ~/mysite/mysite
$ cd../..
2017-10-05_12: 04 ~
$ mv mysite SENSIBLE_NAME_DJANGO_ROOT
Ответ 12
у меня возникла та же проблема, и я решил ее, добавив /polls после http://server: port/, поэтому итоговый адрес на сервере выглядит так:
HTTP://сервер: порт/опросы