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

Flask单元测试中Flask-Testing提交表单后FlaskForm无法取值问题

问题原因

  • 表单初始化参数错误
    FlaskForm构造函数中,formdata参数才是用来接收表单提交数据(如request.form)的参数,你错误地将request.form传给了用于设置默认值的data参数,导致字段解析逻辑异常。
  • 时间格式不匹配
    DateTimeField默认使用%Y-%m-%d %H:%M:%S格式解析时间字符串,你提交的时间值没有秒数,不符合默认解析规则,解析失败后返回None。

修复方案

  1. 修正路由中的表单初始化代码
    两种写法二选一即可:
# 写法1:FlaskForm自动读取请求中的表单数据,无需手动传参
form = BusinessTripProcessingForm()

# 写法2:显式传入formdata参数
form = BusinessTripProcessingForm(formdata=request.form)
  1. 给DateTimeField指定匹配的时间格式
    修改表单定义,指定和你提交数据匹配的格式:
class BusinessTripProcessingForm(FlaskForm):
    departure_time = DateTimeField('Exact departure date and time', format='%Y-%m-%d %H:%M')
    return_time = DateTimeField('Exact return date and time', format='%Y-%m-%d %H:%M')
  1. 可选优化:测试请求显式指定内容类型
    测试时给POST请求加上表单类型声明,避免部分环境下解析异常:
response = self.client.post('/business_trip_request_processing/1',
                            data=data,
                            content_type='application/x-www-form-urlencoded')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 13:33:04