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

Django提交POST表单后返回空白页 如何正确获取表单参数值

Django POST表单提交空白、无法获取下拉框参数修复方案

问题根因

三个写法错误直接导致当前异常:

  • 参数获取对象错误:前端表单明确配置method="post",提交的表单参数存储在POST请求体中,现有视图代码使用self.request.GET.get()取值,完全无法获取到提交的年份参数
  • 重定向逻辑错误:HttpResponseRedirect方法需要传入可访问的实际路径,现有代码直接传入路由别名fdm:outstanding_reports,Django不会自动执行反向解析,会将该字符串识别为相对路径匹配,路由匹配失败就会返回空白响应,同时该跳转目标和你预期返回原reports表单页的需求也不匹配
  • 前端提交按钮绑定了onclick="test()"事件,如果该JS函数不存在、或函数内没有正确处理表单提交逻辑,会直接阻断默认表单提交流程

具体修复代码

1. 调整视图层逻辑

将原有POST分支代码替换为如下内容:

from django.shortcuts import HttpResponseRedirect
from django.urls import reverse

# 类视图POST分支
if self.request.method == 'POST':
    # 从POST对象中获取下拉框参数,可根据业务需求转成整数类型
    year_one = self.request.POST.get('year_one')
    year_two = self.request.POST.get('year_two')

    # 此处可添加自定义业务逻辑,比如参数校验、根据年份筛选数据、把参数存入session等

    # 通过reverse反向解析app:reports的实际路由,提交后跳转回原表单页
    return HttpResponseRedirect(reverse('app:reports'))

如果是函数视图,把代码里的self.去掉,直接调用request.POST.get()、request相关方法即可

2. 前端表单排查调整

  • 如果按钮绑定的test()函数没有特殊业务作用,直接删除按钮上的onclick="test()"属性,避免JS报错阻断提交
  • 确认两个下拉框的name属性值和视图层取值的key完全一致,不要出现拼写错误
  • 保留表单内的{% csrf_token %}标签,避免POST请求被Django的CSRF防护拦截返回403错误

验证标准

  • 点击提交按钮后页面正常跳转回reports表单页,无空白响应
  • 视图层可以正常获取到year_one、year_two两个下拉框选中的年份值,可直接用于后续数据查询、统计逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:51:23