You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django 4.1中auth LogoutView需POST请求:是否有内置表单获取CSRF?

Django 4.1 LogoutView 内置CSRF表单解决方案

Django 4.1 版本起,LogoutView 默认仅接受 POST 请求(原GET方式因安全风险被废弃),官方并未提供专门的内置登出表单类,但有两种简单的方式实现带CSRF令牌的POST登出请求:

  • 直接手写模板表单(推荐)
    利用Django内置的CSRF模板标签,无需额外定义表单类,直接在模板中编写:

    <form method="post" action="{% url 'logout' %}">
        {% csrf_token %}
        <button type="submit">退出登录</button>
    </form>
    

    {% csrf_token %} 会自动生成包含CSRF令牌的隐藏输入字段,满足LogoutView的请求验证要求。

  • 自定义极简表单类(可选)
    若需复用表单结构,可定义一个无额外字段的表单类(仅作为表单载体):

    from django import forms
    
    class LogoutForm(forms.Form):
        pass  # 无需添加字段,CSRF令牌仍通过模板标签注入
    

    在模板中使用该表单时,依然需要加入{% csrf_token %}:

    <form method="post" action="{% url 'logout' %}">
        {% csrf_token %}
        {{ form }}
        <button type="submit">退出登录</button>
    </form>
    

注意:原GET方式的登出链接(如<a href="{% url 'logout' %}">退出</a>)已不再生效,必须通过POST表单提交请求。

内容的提问来源于stack exchange,提问作者TaiwanGrapefruitTea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:12:23