我正在尝试使用Flask和Python 3.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>
其中'selecting.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路线之间没有携带所选类别的第二个单词,我该怎么做才能保留完整的类别名称?
答案 0 :(得分:3)
根据HTML5 documentation,不带引号的属性不得包含嵌入空格。
您的input
元素会扩展为以下文字:
<input type = 'radio' name= 'categories' value =North America>
即使您的value
属性的值为North America
,它实际上也有一个value
属性,其值为North
和一个{ {1}}属性为空值。
尝试引用America
属性值:
value