NoReverseMatch в /account/login/ (Попытка использовать представления аутентификации на основе классов)

Я пытаюсь использовать представления аутентификации на основе классов Django и получаю следующую ошибку при попытке доступа к представлению входа в систему:

NoReverseMatch at /account/login/
Reverse for 'register' not found. 'register' is not a valid view function or pattern name.
Error during template rendering

In template /Users/justin/Desktop/Programming/Python/django_book/social/website/account/templates/base.html, error at line 0

Все шаблоны аутентификации хранятся по адресу account/templates/registration/, а dashboard.html хранится по адресу account/templates/account/, вот код:

account/urls.py:

from django.urls import path
from . import views
from django.contrib.auth import views as auth_views


urlpatterns = [
    path('', views.dashboard, name = 'dashboard'),
    path('login/', auth_views.LoginView.as_view(), name = 'login'),
    path('logout/', auth_views.LogoutView.as_view(), name = 'logout'),
]

login.html:

{% extends "base.html" %}

{% block title %}Log-in{% endblock %}

{% block content %}
  <h1>Log-in</h1>
  {% if form.errors %}
    <p>
      Your username and password didn't match.
      Please try again.
    </p>
  {% else %}
    <p>Please, use the following form to log-in. If you don't have an account <a href="{% url "register" %}">register here</a></p>
  {% endif %}
  <div class="login-form">
    <form action="{% url 'login' %}" method="post">
      {{ form.as_p }}
      {% csrf_token %}
      <input type="hidden" name="next" value="{{ next }}" />
      <p><input type="submit" value="Log-in"></p>
    </form>
  </div>

{% endblock %}

base.html:

{% load static %}
<!DOCTYPE html>
<html>
  <head>
    <title>{% block title%}{% endblock %}</title>
    <link rel="stylesheet" href="{% static 'css/base.css'  %}">
  </head>

  <body>
    <div id="header">
      <span class = 'logo'>Bookmarks</span>
      {% if request.user.is_authenticated %}
        <ul class = 'menu'>
          <li {% if section == "dashboard" %}class="selected"{% endif %}>
            <a href="{% url 'dashboard' %}">My dashboard</a>
          </li>
          <li {% if section == "images" %}class="selected"{% endif %}>
            <a href="#">Images</a>
          </li>
          <li {% if section == "people" %}class="selected"{% endif %}>
            <a href="#">People</a>
          </li>
        </ul>
        {% endif %}
        <span class = 'user'>
          {% if request.user.is_authenticated %}
            Hello {{ request.user.first_name }},
            <a href = "{% url 'logout'%}">Logout</a>
          {% else %}
            <a href = "{% url 'login'%}">Login</a>
          {% endif %}
        </span>
    </div>



    <div id="content">
      {% block content %}

      {% endblock %}
    </div>
  </body>
</html>

Не уверен, нужно ли это, но в account/views.py с dashboard представлением:

from django.contrib.auth.decorators import login_required

@login_required
def dashboard(request):
    return render(request,
                  'account/dashboard.html',
                  {'section': 'dashboard'})

и dashboard.html:

{% extends "base.html" %}

{% block title %}Dashboard{% endblock %}

{% block content %}
  <h1>Dashboard</h1>
  <p>Welcome to your dashboard.</p>
{% endblock %}

Я следую книге "Django 2 на примере" и на данный момент я считаю, что я напрямую скопировал и вставил код отсюда (https://github.com/PacktPublishing/Django-2-by-Example/tree/master/Chapter04), чтобы попытаться исправить эту ошибку, но я все еще получаю. Я должен отметить, что я использую Django 3.2.6 и не уверен, что причина в этом. Спасибо за любую помощь в этом вопросе.

Вернуться на верх