HTML date类型输入提交值对应的Python变量类型是什么?
结论
如果不对提交的表单值做类型转换直接比较,var必须是YYYY-MM-DD格式的字符串类型。如果需要做日期逻辑判断(比如比较先后、计算日期间隔),建议先转成日期类型再比较。
详细说明
- 表单提交的默认值类型
HTML中type="date"的input控件提交的内容,默认是符合YYYY-MM-DD格式的字符串,所以通过request.form.get("date")拿到的date变量本身就是字符串类型,直接做相等比较的话,var也要是相同格式的字符串,示例如下:
# 直接字符串比较示例 var = "2024-06-01" date = request.form.get("date") if date == var: # 对应逻辑处理
- 现有代码问题提示
你当前的input标签缺少name="date"属性,后端无法通过request.form.get("date")拿到对应值,需要修改表单代码:
<form action="" method="post"> <label for="date">Choose a date:</label> <input type="date" id="date" name="date"> <button type="submit">Submit</button> </form>
- 日期逻辑比较的推荐写法
如果需要做大于、小于这类日期先后判断,建议把字符串转成datetime.date类型再操作,这时候var也需要是datetime.date类型:
from datetime import datetime date_str = request.form.get("date") # 把提交的字符串转成date类型 date_obj = datetime.strptime(date_str, "%Y-%m-%d").date() # var也使用date类型 var = datetime(2024,6,1).date() if date_obj == var: # 相等逻辑处理 if date_obj > var: # 也可以直接做日期先后比较
内容的提问来源于stack exchange,提问作者Spyromancer
相关产品推荐
相关产品推荐

