python - 带有模板渲染的 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>
任何人都可以帮助解决这个问题?
解决方案
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>
推荐阅读
- python - 如何在具有 NaN 的 DataFrame 列中查找小写单词?
- regex - 循环全局替换
- google-app-engine - 我试图查询 MySQL 作为一个承诺,但我不断收到“未处理的承诺拒绝错误”
- javascript - 如何在没有 jsp / 模板的情况下在 / 页面内返回数据?
- python - 是否可以使用 numpy 乘法将字符串乘以整数?
- opengl - 关于使用 glVertexAttribPointer 绑定不存在属性的索引的困惑
- c - 如何修改我用 C 编写的树遍历程序,使其不依赖递归?
- javascript - 承诺中来自 Console.log() 的奇怪行为
- flask - 如何使用 Flask SocketIO 进行多个事件?
- swift - 如何返回一个数组?