Flask获取表单单选框值时仅返回字符串首段的问题求助
单选框提交后仅获取"from"前缀的问题排查与解决
嘿,我来帮你搞定这个问题!你遇到的情况是前端能正常显示所有以"from"开头的单选选项,但后端不管选哪个都只拿到"from",这其实是HTML属性渲染的小坑导致的。
先回顾下你的代码:
你使用的Jinja2模板代码
{% for item in l %} <div> <input type="radio" name="value" value={{item}} style="color: white;" /> <label style="color: white;">{{item}}</label> </div> {% endfor %}
后端Python代码
val = request.form.get('value') note = request.form.get('Note') print(val)
问题根源
问题出在value={{item}}这里!因为你的选项都包含空格(比如from xxx),而你没有给value的属性值加引号。浏览器解析HTML时,会把空格当成属性的分隔符——也就是说,渲染后的HTML会变成这样:
<input type="radio" name="value" value=from xxx style="color: white;" />
这里浏览器会把from识别为value的完整值,后面的xxx被当成了一个无效的独立属性,所以后端只能拿到"from"。
解决方法
只需要给value的属性值加上双引号,把整个item内容包裹起来就行,修改后的模板代码如下:
{% for item in l %} <div> <input type="radio" name="value" value="{{item}}" style="color: white;" /> <label style="color: white;">{{item}}</label> </div> {% endfor %}
这样渲染后的每个单选框value都会完整保留选项内容,比如:
<input type="radio" name="value" value="from abc" style="color: white;" />
之后后端用request.form.get('value')就能正确获取到你选中的完整选项值啦!
内容的提问来源于stack exchange,提问作者Maheedhar A
相关产品推荐
相关产品推荐

