it-swarm.com.ru

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

У меня такая же проблема. 

Оказывается, я был сбит с толку из-за нескольких каталогов с именем «mysite». 

Я неправильно создал файл urls.py в корневом каталоге «mysite» (который содержит «manage.py»), а затем вставил код с веб-сайта. 

Чтобы исправить это, я удалил этот файл, зашел в каталог mysite/mysite (который содержит «settings.py»), изменил существующий файл «urls.py» и заменил код учебным кодом.

В двух словах, убедитесь, что ваш файл urls.py находится в правильном каталоге.

65
ZakJ

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, вы можете использовать первый аргумент функции Pattern (), чтобы указать префикс, который будет применяться к каждой функции представления.

Ответьте, если

Если вы хотите получить доступ к 127.0.0.1:8000/pollsПримечание: без косой черты 

использовать вид на основе URL

url(r'^polls', 'polls.views.index', name='index'),

Так что теперь вы можете получить доступ к 127.0.0.1:8000/polls без косой черты.

8
Raja Simon

Вы обращаетесь к http://yourdomain.com/ , и у вас нет URL, определенного для "/".

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

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

  2. Вы также можете изменить свой файл mySite/urls.py для доступа только с 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')),
    
    )
    
3
Emily

Чтобы разъяснить ответ новичкам, у которых возникла эта проблема, следуя инструкциям, корневой 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'

Вам не нужно создавать новый новый корневой URLconf. 

2
jwndev

Вы помещаете папку urls.py во внешнюю папку MySite, вы должны поместить ее во внутреннюю папку, чтобы она была не mySite/urls.py, а mySite/mySite/urls.py:

столкнулся с той же ошибкой, когда я сделал учебник

1
duyinhao

В зависимости от того, куда вы положили ROOT urls.py, вы соответственно устанавливаете ROOT_URLCONFIG. Если он находится в самой внешней папке, содержащей manage.py, тогда «urls» - это нормально. если он у вас есть в другой папке, тогда вы должны сделать «.urls»

Кредит за ответ на jerryh91

Для получения дополнительной информации о том, как это работает, проверьте Как Django обрабатывает запрос

1
javidazac

Другим способом доступа к 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'),
]
1
Muhammad Yousaf

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

0
user50619

В моем случае это была ошибка глупо. Я хотел интегрировать плагин Django-tinymce и протестировать его. Поэтому, следуя this guide, я выполнил шаг 3 и экспортировал переменную в путь. Когда сервер снова запустился, я получил ошибку not found, показывая сообщение: 

Используя URLconf, определенный в testtinymce.urls, Django попробовал эти URL узоры, в таком порядке: .... 

Но я не знал, что именно это было, пока не вспомнил экспорт переменной Django_SETTINGS_MODULE

запуск unset Django_SETTINGS_MODULE в терминале решил мою проблему. Надеюсь, что это кому-то тоже поможет.

0
pbalazek

Добавьте строку ниже в свой Mysite/urls.py

url(r'^$', views.index, name='index'),

и проверить. Если вы создали свой проект правильно, он должен работать. В противном случае могло произойти что-то подобное выше, так как несколько файлов были перепутаны.

0
srilekha.bikki

На самом деле проблема в том, что вы не заметили, что mysite/urls.py и polls/urls.py - это два разных файла и вы изменили polls/urls.py вместо того, чтобы поместить mysite/urls.py в файл urls.py в папке ... mysite\mysite.

0
Josephat Mwanzia