Django中input标签设置默认值问题:空字符串转int触发ValueError
Django中解决未输入内容时int转换报错的方案
一、HTML层面设置默认值
直接给input标签添加value属性,设置默认值为0,这样即使用户未输入内容,表单提交时也会传递0而非空字符串:
<div class="input-group" style="margin-top: 1vh;"> <input name="gen_down" type="number" class="form-control" value="0" /> <span class="input-group-text">%</span> </div>
二、后端层面做容错处理
前端设置默认值后,仍可能存在用户手动清空输入框的情况,建议同时在后端做容错,避免报错:
方法1:先判断字符串是否为空再转换
gen_down_str = request.POST.get('gen_down', '') gen_down = int(gen_down_str) if gen_down_str.strip() else 0
方法2:用try-except捕获异常
try: gen_down = int(request.POST.get('gen_down', '')) except ValueError: gen_down = 0
报错原因说明
你之前的代码int(request.POST.get('gen_down', 0))之所以报错,是因为当input为空时,POST请求中存在gen_down这个键,但对应的值是空字符串'',这时候request.POST.get的第二个默认参数0不会生效,直接将空字符串转int就会触发ValueError。
内容的提问来源于stack exchange,提问作者I-style Toon
相关产品推荐
相关产品推荐

