Страница не найдена по адресу /about/. Текущий путь, about/, не соответствует ни одному из этих путей. Почему django не может следовать моему пути URL?
Я уверен, что этот вопрос уже задавался много раз, но я уверен, что делаю все точно так, как написано в руководстве, и все равно ничего не получается. Я могу получить доступ к главной странице, но не к странице о сайте.
Вот скриншот ошибки:
https://i.stack.imgur.com/oFNAJ.png
У меня есть путь URL в моем файле .urls (файл ниже)
from django.urls import path
from . import views
urlpatterns = [
path('', views.homepage, name='main-home'),
path('about/', views.about, name='main-about'),
]
В файле .urls я сослался на файл .views (ниже)
from django.shortcuts import render
from django.http import HttpResponse
def homepage(request):
return HttpResponse('<h1>Home</h1>')
def about(request):
return HttpResponse('<h1>About</h1>')
Я могу упустить что-то вопиюще очевидное, но я смотрю на это уже несколько часов и все еще не могу понять, почему он не может найти страницу.
EDIT: Я ссылаюсь на файл app urls в главном посте. Если это будет полезно, вот файл .urls проекта:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('homepage/', include('home.urls')),
]
Согласно скопированному изображению, вы обращаетесь к localhost:8000/about, а не к loaclhost:8000/homepage/about, который, я думаю, если бы вы посетили прямо сейчас, вернул бы ваш объект HttpResponse вида "about".
Основной сайт urls.py ссылается на 'homepage/', поэтому для всего, что имеет этот префикс, он будет искать дополнительные объекты/параметры пути в вашем приложении urls.py. Попробуйте:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('home.urls')),
]
Тогда prefixed ваш url с homepage как
localhost:8000/homepage/about/
Всегда лучше использовать {% url %} [Django-doc] шаблонные теги для urls внутри templates, которые будут указывать на ваш correct url даже после того, как вы измените url путь, но с тем же именем.