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

Django文件对比表单提交后未跳转至目标视图,出现404错误求助

问题原因及解决方案

核心原因

  1. 表单缺少CSRF令牌:Django默认启用CsrfViewMiddleware,所有POST表单必须包含CSRF验证令牌,否则请求会被拦截,进而触发异常跳转,导致请求方法变为GET,且路径错误(出现未定义的/post URL)。
  2. URL路径不匹配:你定义的文件对比处理路径是/compare-files/,但实际请求的是/post,这是CSRF验证失败后的异常行为导致的。

修复步骤

1. 给表单添加CSRF令牌

修改home.html中的表单代码,加入{% csrf_token %}标签:

<form method="post" action="{% url 'compare-files' %}" enctype="multipart/form-data">
    {% csrf_token %}
    <br>file 1: <br>
    <input type = 'file' name="file1"/>
    <br>file 2: <br>
    <input type = 'file' name="file2"/>
    <br><button type="submit">Compare Files</button>
</form>

2. 验证表单渲染路径

提交前查看页面源码,确认表单的action属性值为/compare-files/,确保{% url 'compare-files' %}正确解析了URL名称。

3. 额外检查(可选)

  • 确保用户处于登录状态(表单仅在登录后显示,未登录时不会触发提交)。
  • 确认compare_files_view中的POST请求逻辑正确,已处理request.FILES中的文件。

验证修复

添加CSRF令牌后,重新提交表单,请求会以POST方法发送到/compare-files/,触发compare_files_view中的文件对比逻辑,返回正确的对比结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 15:16:06