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

Django内置LogoutView无法使用,报405 Method Not Allowed错误

Django LogoutView 出现405 Method Not Allowed 问题解决

使用最新版Django通过内置LogoutView实现登出功能时,出现405错误,登出无法正常工作。

错误截图:
错误截图

urls.py代码:

from django.contrib import admin
from django.urls import path, include
from users import views as user_views
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('food/',include('food.urls')),

    path('register/',user_views.register,name='register'),

    path('login/',auth_views.LoginView.as_view(template_name='users/login.html'),name='login'),
    path('logout/',auth_views.LogoutView.as_view(template_name='users/logout.html'),name='logout'),

]

排查到的错误信息:

HTTP错误码405表示“方法不被允许”。Django的LogoutView预期使用POST方法完成登出,但终端收到的是:
"GET /logout/ HTTP/1.1" 405 0
Method Not Allowed (GET): /logout/
Method Not Allowed: /logout/

解决方法

方式一:使用POST请求触发登出(推荐)

Django默认要求登出操作使用POST方法,防止CSRF攻击。在你的登出模板(users/logout.html)中添加一个表单:

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

通过点击表单的提交按钮触发POST请求,即可正常完成登出。

方式二:允许GET请求(不推荐)

如果因为特殊需求必须用GET请求触发登出,可以修改LogoutView的配置,允许GET方法:

path('logout/', auth_views.LogoutView.as_view(
    template_name='users/logout.html',
    http_method_names=['get', 'post']
), name='logout'),

⚠️ 注意:这种方式存在安全风险,恶意网站可能通过构造链接诱导用户误登出,因此强烈不建议使用。

内容的提问来源于stack exchange,提问作者Rahul Raj M.A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:18:18