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

Django内置LogoutView报405错误,访问登出URL无法登出怎么办?

解决Django LogoutView 405 Method Not Allowed错误

问题原因

Django自带的LogoutView默认只接受POST请求,直接通过浏览器以GET方式访问该路由,就会触发405 Method Not Allowed错误。这是Django为防范CSRF攻击设置的默认安全规则。

解决方案

方案1:用表单提交POST请求(推荐)

在模板中添加一个提交POST请求的表单,带上CSRF令牌:

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

用户点击按钮时会发送POST请求,即可正常触发登出逻辑。

方案2:允许GET请求(不推荐,存在安全风险)

如果是测试场景或无需考虑CSRF风险,可修改LogoutView配置,允许GET请求:

from django.contrib.auth import views as auth_views

urlpatterns = [
    # ...其他路由
    path('users/logout/', auth_views.LogoutView.as_view(
        http_method_names=['get', 'post'],
        next_page='/'  # 登出后跳转页面,可按需修改
    ), name='logout'),
]

这种方式能直接通过GET访问实现登出,但生产环境不建议使用,易被恶意利用发起CSRF攻击。

内容的提问来源于stack exchange,提问作者christopher johnson mccandless

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:39:59