#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
),
]