热门标签:
Q:

如何通过HTML表单携带带有空格的字符串,使用Flask

我正在尝试使用Flask和Python3.6构建一个简单的在线测验,使用带有单选按钮的HTML表单在Flask路由之间携带选定的答案。 第一步是为测验选择一个类别,然后再进入实际的测验页面,如下所示:

app = Flask(__name__)
categories = ['Europe', 'South America', 'North America']
@app.route('/')
def select():
    return render_template('selecting.html', cats= categories)

@app.route('/quiz', methods = ['POST'])
def quizing():
    selected_cat = request.form['categories']
    return "<h1>You have selected category: " + selected_cat + "</h1>

在哪里选择。html'如下:

<form action='/quiz' method='POST'>
<ol>
{% for cat in cats%}
    <li><input type = 'radio' name= 'categories' value ={{cat}}>{{cat}}</li>
{% endfor %}
</ol>
<input type="submit" value="submit"/>
</form>

当我选择"欧洲"时,测验页面会显示:

<h1>You have selected category: Europe</h1>

但是,当我选择"北美"时,测验页面会显示:

<h1>You have selected category: North</h1>

为什么在Flask路由之间没有携带所选类别的第二个单词,我可以做些什么来保留完整的类别名称?

原网址
A:

根据HTML5文档,未加引号的属性不能有嵌入的空格。

您的input元素扩展为以下文本:

<input type = 'radio' name= 'categories' value =North America>

即使你的意思是它有一个值为North AmericaNorth America属性,它实际上有一个值为NorthNorth America属性和一个值为空的America属性。

尝试引用North America属性值:

<li><input type = 'radio' name= 'categories' value ="{{cat}}">{{cat}}</li>

相似问题