Подтвердить что ты не робот

Страница не найдена 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.
4b9b3361

Ответ 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