这个问题可能是重复的,但我已经检查过这些相关问题的所有答案,但我还没能解决。
我正在尝试从包含数字的下拉菜单中获取值。然后我想将数字与值进行比较,并根据比较显示文本。
例如
if value_selected_from_dropdown >3
display text
我无法显示文本,甚至无法打印所选选项的值。
这是python文件web_plants.py
from flask import Flask, render_template,request, redirect, url_for
app = Flask(__name__)
def template(title = "HELLO!", text = ""):
templateDate = {
'text' : text
}
return templateDate
@app.route("/threshold", methods=['POST'])
def threshold():
tvalue= (request.form.get['tvalue']) #get value from dropdown
msg= ""
if tvalue>3:
msg= "rating above 3"
templateData = template(text = msg) #display text using template()
#templateData = template(text = tvalue) #tried to print the value selected
return render_template('index.html', **templateData)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80, debug=True)
的index.html:
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='style.css')}}" />
</head>
<body>
<h2> {{ text }} </h2>
<form action= "{{ url_for('threshold') }}" method="post>"
<p>
<select name= 'tvalue'>
<option value="10">10</option>
<option value="11">11</option>
<option value="15">15</option>
<option value="2">2</option>
<option value="1">1</option>
</select>
</p>
</form>
</body>
</html>
答案 0 :(得分:2)
有几种方法可以实现这一目标。您可以为模板本身提供逻辑,也可以在function threshold
中添加逻辑。
<强>的index.html 强>
<h2> {{text}} </h2>
<form action= "{{ url_for('threshold') }}" method="POST">
<select name= 'tvalue'>
{% for tvalue in tvalues %}
{% if selected_tvalue == tvalue %}
<option value="{{ tvalue }}" selected='selected'>{{ tvalue }}</option>
{% else %}
<option value="{{ tvalue }}" >{{ tvalue }}</option>
{% endif %}
{% endfor %}
</select>
<input type="submit" value="Submit" />
</form>
或强>
{% if selected_tvalue > 3 %}
<h2> Selected value is greater than 3 </h2>
{% else %}
<h2> Selected value is less than or equal to 3 </h2>
{% endif %}
<form action= "{{ url_for('threshold') }}" method="POST">
<select name= 'tvalue'>
{% for tvalue in tvalues %}
{% if selected_tvalue == tvalue %}
<option value="{{ tvalue }}" selected='selected'>{{ tvalue }}</option>
{% else %}
<option value="{{ tvalue }}" >{{ tvalue }}</option>
{% endif %}
{% endfor %}
</select>
<input type="submit" value="Submit" />
</form>
<强> server.py 强>
def template(title = "HELLO!", text = ""):
templateDate = {
'text' : text,
'tvalues' : getTValues(),
'selected_tvalue' : -1
}
return templateDate
def getTValues():
return (10, 11, 15, 2, 1)
@app.route("/threshold", methods=['POST', 'GET'])
def threshold():
tvalue= -1 #default value
msg = ''
if request.method == "POST":
tvalue = int(request.form['tvalue'])
if tvalue> 3:
msg= "rating above 3"
#generating template data
templateData = template(text = msg)
templateData['selected_tvalue'] = tvalue
return render_template('index.html', **templateData)
然后在路径/threshold
访问您的表单。我希望它有所帮助。
答案 1 :(得分:1)
在您的下拉菜单后的html中,您可能需要类似
的内容 <input type="submit">
将触发提交。我不确定,单独选择一个值会触发表单提交。
顺便说一下,您最初在哪里呈现页面?我会有类似的东西:
@app.route('/')
@app.route('/index')
def index():
return render_template('index.html')
在python代码中。有了价值,我会尝试
tvalue= request.args.get('tvalue')
那不是&#39;形式&#39;但是&#39; args&#39;和普通括号而不是平方括号。最后,您要处理的功能是&#39; templateData&#39;可能也会丢失。
最后一点: 你可能也需要GET方法:
@app.route("/threshold", methods=['GET', 'POST'])