DJANGO 无法使用超链接导航到页面,但输入页面地址可以正常工作

DJANGO cant navigate to page using a hyperlink but typing page address works fine

用两个应用程序做一个简单的 django 项目,一个用于博客,另一个用于用户,两者都工作正常,但我无法使用此页面中的超链接导航

<p>
<a href="{% url 'learning_logs:home' %}">Home</a>
<a href="{% url 'learning_logs:topics' %}">Topics</a>
{% if user.is_authenticated %}
    Hello, {{ user.username }}.
    <a href="{% url 'users:logout' %}">logout</a>
{% else %}
    <a href="{% url 'users:login' }">login</a>
{% endif %}

urls.py 用户

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

项目的主要网址

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('learning_logs.urls', namespace='learning_logs')),
    path('users/', include('users.urls', namespace='users')),
    ]

错误信息

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/%7B%25%20url%20'users:login'%20%7D
Using the URLconf defined in learning_log.urls, Django tried these URL patterns, in this order:

admin/
[name='home']
topics [name='topics']
topics/<topic_id> [name='topic']
new_topic [name='new_topic']
new_entry/<topic_id> [name='new_entry']
edit_entry/<entry_id> [name='edit_entry']
users/
The current path, {% url 'users:login' }, didn’t match any of these.

如果我在地址栏中键入 /users/login/,它会显示页面

您在 html 文件中的 login 中忘记了 %。 从

更改您的 html 代码
<a href="{% url 'users:login' }">login</a>

<a href="{% url 'users:login' %}">login</a>

删除引号

{% if user.is_authenticated %}
   <a href="{% url users:logout %}">logout</a>
{% else %}
   <a href="{% url users:login %}">login</a>
{% endif %}

这里问的很明显,你试过了吗:

<a href="{% url 'logout' %}">Log Out</a>

换句话说,您将 url 命名为 'logout',所以尝试只使用 url 的名字。