Проблема с Входом пользователя Django

#python #django

Вопрос:

Я снова вернулся с вопросом о Джанго. У меня возникли проблемы с запуском экрана входа в систему. Я чувствую, что, возможно, это простая проблема, которую я просто не вижу. Я использую текущие версии Python и Django. Я получаю ошибку NoReverseMatch при попытке получить доступ к моей странице входа в систему. Вот код, а также несколько снимков экрана:

base.html:

 <p>
    <a href="{% url 'learning_logs:index' %}">Learning Log</a> -
    <a href="{% url 'learning_logs:topics' %}">Topics</a> -
    {% if user.is_authenticated %}
      Hello, {{ user.username }}.
    {% else %}
      <a href="{% url 'users:login' %}">log in</a>
    {% endif %}
</p>
{% block content %}{% endblock content %}
 

login.html:

 {% extends "learning_logs/base.html" %}

{% block content %}

  {% if form.errors %}
  <p>Your username and password didn't match. Please try again.</p>
  {% endif %}

  <form method="post" action="{% url 'users:login' %}">
      {% csrf_token %}
      {{ form.as_p }}

      <button name="submit">log in</button>
      <input type="hidden" name="next" value="{% url 'learning_logs:index' %}"/>
  </form>

{% endblock content %}
 

users/urls.py:

 from django.urls import path
from django.conf.urls import url
from django.contrib.auth.views import LoginView

from . import views

app_name = 'users'

urlpatterns = [
    # Login page
    #path('login/', LoginView, {'template_name': 'users/login.html'}, name='login'),
    path('login/', LoginView.as_view(template_name='users/login.html')),
]
 

Кодовое местоположение

Сообщение об ошибке

Комментарии:

1. Вы должны добавить , name='login' в path .

Ответ №1:

С тех пор, как вы прокомментировали эту name='login' часть. Django больше не может найти path(…) [Django-doc] с таким именем, отсюда и ошибка.

Вы должны добавить name=… параметр:

 # users/urls.py

from django.urls import path
from django.contrib.auth.views import LoginView

from . import views

app_name = 'users'

urlpatterns = [
    # Login page
    path(
        'login/',
        LoginView.as_view(template_name='users/login.html'),
        name='login'  # name of the path
    ),
]