Ссылка href в Django не маршрутизируется на правильный url
Ссылки в моих страницах/templates/base.html, которые используются для шаблона заголовка, приводят к 404 ошибке. Страницы загружаются правильно, если вручную написать 'http://127.0.0.1:8000' 'http://127.0.0.1:8000/about/'. Я использую представления на основе классов и следую главе 3 книги Django для начинающих (William Vincent).
pages/templates/base.html:
<header>
<a href="{% url 'home' %">Home</a> |
<a href="{% url 'about' %">About</a>
</header>
pages/urls.py:
from django.urls import path
from .views import HomePageView, AboutPageView
urlpatterns = [
path("", HomePageView.as_view(), name="home"),
path("about/", AboutPageView.as_view(), name="about"),
]
portfolio/urls.py:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path("", include("pages.urls")),
]
settings.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'pages.apps.PagesConfig',
]
pages/views.py:
from django.views.generic import TemplateView
# Create your views here.
from django.http import HttpResponse
class HomePageView(TemplateView):
template_name = 'home.html'
class AboutPageView(TemplateView):
template_name = "about.html"
Ошибка выглядит следующим образом:
Using the URLconf defined in portfolio.urls, Django tried these URL patterns, in this order:
admin/
[name='home']
about/ [name='about']
The current path, about/{% url 'about' %, didn’t match any of these.
Ошибка терминала:
Not Found: /{% url 'about' %
[26/Oct/2022 11:40:02] "GET /%7B%%20url%20'about'%20% HTTP/1.1" 404 2497
Я думаю, что проблема кроется в pages/urls.py, так как при нажатии на ссылку 'home' из 'http://127.0.0.1:8000/about/' url будет 'http://127.0.0.1:8000/about/%7B%%20url%20'home'%20%'. Я пытался удалить "about/" из " path("about/", AboutPageView.as_view(), name="about"),
"
Я также не уверен, правильно ли написаны теги href. Я просмотрел this и this, но не могу разобраться. Спасибо.
{% url 'about' %
<- вам нужно закрыть его должным образом.