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

Django提交表单报Method Not Allowed (POST): /property/like/错误排查

问题排查及解决方案

核心错误(Method Not Allowed POST)常见原因及修复

1. URL斜杠匹配问题

这是最高发的原因:Django默认开启APPEND_SLASH配置,当你提交POST请求到不带结尾斜杠的地址/property/like时,Django会自动返回301重定向到带斜杠的/property/like/,但重定向过程会把POST请求转为GET请求,就会触发405方法不允许错误。
修复方案:

  • 按下F12查看页面渲染后的表单action属性值,确保是带结尾斜杠的/property/like/
  • 或者修改urls.py的path配置,去掉路径结尾斜杠,和表单提交地址保持一致即可。

2. 根路由配置错误

检查项目根目录的urls.py中引入property app路由的配置,如果你用re_path配置根路由,不要加正则结束符$,否则会截断子路由匹配,导致请求地址无法命中对应视图:

# 根urls.py正确写法
path('property/', include('property.urls'))
# 若使用re_path不要加结束符$
re_path(r'^property/', include('property.urls'))

3. 视图被限制了请求方法

检查like_property视图上是否加了错误的请求方法限制装饰器,比如@require_GET、@require_http_methods(["GET"]),如果有,修改为允许POST即可:

from django.views.decorators.http import require_http_methods

@require_http_methods(["POST"]) # 正确配置,仅允许POST访问该视图
def like_property(request):
    # 原有业务逻辑

额外代码bug修复(不影响405报错,但会导致点赞逻辑异常)

你视图中存在手误,把赋值语句写成了判断语句,会导致点赞状态无法正常切换:

# 错误代码:双等号是判断语句,没有赋值效果
if like.value == 'Like':
    like.value == 'Unlike'
# 改为单等号完成赋值
if like.value == 'Like':
    like.value = 'Unlike'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:24:02