Django 4.1 polls tutorial, все сделано Admin работает нормально, но индекс не найден
ok polls tutorial is done and can enter questions, vote, etc. but from the admin pages View site aka localhost:8000 gives...
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
dose/
admin/
The empty path didn’t match any of these.
Теперь у меня есть polls/views.py...
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render
from django.urls import reverse
from django.utils import timezone
from django.views import generic
from .models import Choice, Question
class IndexView(generic.ListView):
template_name = 'polls/index.html'
context_object_name = 'latest_question_list'
def get_queryset(self):
"""
Return the last five published questions (not including those set to be
published in the future).
"""
return Question.objects.filter(
pub_date__lte=timezone.now()
).order_by('-pub_date')[:5]
и 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),
]
и 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'),
]
Единственная подсказка, которую я могу найти, это то, что все импорты показывают подсветку ошибок в VSCode с ошибкой "reportMissingModuleSources"
Но python и django прекрасно работают везде, кроме index.html
Нет url по адресу http://localhost:8000/
- это ожидаемое поведение, куда вы хотите перейти - это http://localhost:8000/polls/
.
Если вы хотите перейти непосредственно к нужному виду без написания префикса polls/
, вы должны определить ваши урлы таким образом:
urlpatterns = [
path('', include('polls.urls')),
path('admin/', admin.site.urls),
]
Так вы размещаете path()
вызов без префикса url. Обычно, если вы include
какую-либо группу url, вы определяете начало адреса таким образом.