如何修复 NoReverseMatch 'user' 不是已注册的命名空间



我正在建立一个网站,想创建一个用户登录页面。但当我在登录页面上时,我总是得到"在/users/login/处的NoReverseMatch,并且'user'不是注册的命名空间"。

url.py

from django.urls import path
from django.contrib.auth.views import LoginView
from . import views
app_name ='users'
urlpatterns = [
path('login/', LoginView.as_view(template_name='users/login.html'),
name='login'),
]

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 'user:login' %}
{% csrf_token %}
{{ form.as_p }}
<botton name="sumbit">log in</button>
<input type="hidden" name="next"
value="{% url 'learning_logs:index' %}
</form>
{% endblock content %}

以及从扩展登录的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 %}

您将app_name='users'命名,并在模板中调用'user'。这就是为什么你会得到它。此外,您的模板上有一个已打开但未关闭的单引号。

最新更新