这是html文件
<a class="nav-link" href="{% url 'logout' %}">Logout</a>
<form action="{% url 'logout' %}" method="POST" id ="logout">
{% csrf_token %}
<input type ="hidden">
</form>
此代码在view.py中。
def logout(request):
if request.method == 'POST':
print("post-request")
auth.logout(request)
return redirect('index')
else:
print(request.method)
auth.logout(request)
return redirect ('index')
为什么注销是GET请求而不是POST请求? 我根据文档对项目进行了一些更改,但无法理解为什么可以使用GET请求成功注销。 https://docs.djangoproject.com/en/3.0/topics/auth/default/
答案 0 :(得分:0)
您的注销在带有链接的<a>
标记中,该链接发送GET请求,并且注销表单不在该<a>
标记之外。并且您当前正在使用链接,因此表单未用于注销。
您可能需要这样的东西:
<form action="{% url 'logout' %}" method="POST" id ="logout" class="nav-link">
{% csrf_token %}
<input type="submit" value="Logout">
</form>