首页 > 解决方案 > 带有模板渲染的 Django 错误。未找到“登录”的反向。“登录”不是有效的视图函数或模式名称

问题描述

我是 Django 新手(也是 stackoverflow 的新手),我正在尝试制作简单的帐户系统。当我“退出”按钮到主页时,我收到此错误

Reverse for 'logout' not found. 'logout' is not a valid view function or pattern name.

帐户/views.py

def signout_view(request):
    if request.method == 'POST':
        logout(request)
        return redirect('/')

帐户/urls.py

app_name = 'account'
urlpatterns = [
    path('signup/', views.signup_view, name='signup'),
    path('signin/', views.signin_view, name='signin'),
    path('signout/', views.signout_view, name='signout'),
]

主页/模板/主页/wrapper.html

<form class="logout-link" action="{% url 'account:logout' %}" method="post">
    {% csrf_token %}
    <button type="submit">Sign out</button>
</form>

任何人都可以帮助解决这个问题?

标签: pythondjango

解决方案


reverse 函数获取 urls.py 中路径函数末尾的名称并检索其 url

path('signup/', views.signup_view, name='signup'),

这里名称是'signup',reverse('signup') 将返回一个'signup/'。Jinja2 的 {% url %} 标签只是在 django 中调用 reverse

所以要让代码在你的代码中工作就行了

<form class="logout-link" action="{% url 'account:signout' %}" method="post">
    {% csrf_token %}
    <button type="submit">Sign out</button>
</form>

推荐阅读