Django 3.0 учебник - mysite / URL не работает - PullRequest
1 голос
/ 20 июня 2020

Я выполнил все семь шагов из Написание вашего первого Django приложения учебника для 3.0. Все работает отлично, кроме URL-адреса базового сайта для mysite в http://127.0.0.1:8000/. В начале урока это работало, но перестало работать по мере продвижения / в конце. http://127.0.0.1:8000/admin/ отлично работает. Может ли кто-нибудь сказать мне, что я делаю не так?

Основываясь на том, как структурирован учебник, т.е. «добавьте то, то и то, и то» и т. Д. c., Что я что-то перезаписал.

Вот ошибка, которую я получаю в моем браузере:

Page not found (404)
Request Method:     GET
Request URL:    http://127.0.0.1:8000/

Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:

    polls/
    admin/

The empty path didn't match any of these.

You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

Вот ошибка, которую я получаю в Терминале:

Not Found: /
[20/Jun/2020 11:01:22] "GET / HTTP/1.1" 404 2027

Вот мой файл polls / urls.py:

from django.urls import path

from . import views

app_name = 'polls'
urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
    path('<int:pk>/', views.DetailView.as_view(), name='detail'),
    path('<int:pk>/results/', views.ResultsView.as_view(), name='results'),
    path('<int:question_id>/vote/', views.vote, name='vote'),
]

Вот мой файл mysite / urls.py:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

Вот ШАБЛОНЫ в mysite / settings.py:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

РЕШЕНО / ОТВЕТ добавлен из комментариев:

Ответ эксперта Виллем Ван Онсем

1. Отредактируйте mysite / urls.py

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('', include('polls.urls')),  # no /polls/ prefix
    path('admin/', admin.site.urls),
]

2. Бег python manage.py runserver

1 Ответ

1 голос
/ 20 июня 2020

Кто-нибудь может сказать мне, что я делаю не так?

Все ваши пути для приложения опроса здесь имеют префикс polls/, поскольку вы написали:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path(<b>'polls/'</b>, include('polls.urls')),
    path('admin/', admin.site.urls),
]

Таким образом, вы можете посетить IndexView, получив URI http://127.0.0.1:8000/<b>polls/</b>. Если вы не хотите указывать префикс URL-адресов, вы можете переписать root urls.py на:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path(<b>''</b>, include('polls.urls')),  # <i>no</i> /polls/ prefix
    path('admin/', admin.site.urls),
]

Затем вы можете просто посетить http://127.0.0.1:8000/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...