Страница не найдена 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-адреса, определенного для "/".

у вас есть два варианта:

  1. Если вы хотите получить доступ к странице индекса вашего приложения опросов, вы должны ввести URL: yourdomain.com/polls

  2. вы также можете изменить вас 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'),
]