在我的程序中,有一个GET请求从表单发送到Flask视图
表格如下:
<form method="GET" action="{{url_for('rerouter')}}">
{{ form.hidden_tag() }}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Search</legend>
<div>
{{ form.welder_selector.label(class="form-control-label") }}
{{ form.welder_selector(class="searchable-welder-js",style="width: 28%") }}
{{ form.wps_selector.label(class="form-control-label") }}
{{ form.wps_selector(class="searchable-wps-js",style="width: 27.8%") }}
{{ form.process_selector.label(class="form-control-label") }}
{{ form.process_selector(class="searchable-process-js",style="width: 27.8%") }}
</div>
</fieldset>
<div class="form-group">
{{ form.submit(class='btn btn-outline-success') }}
</div>
</form>
我设置为GET和action的form方法也被发送到视图:
相应的视图:
@app.route("/rerouter", methods=['GET', 'POST'])
def rerouter():
if request.method == 'GET':
value1 = request.args.get('welder_selector')
value2 = request.args.get('wps_selector')
value3 = request.args.get('process_selector')
print("Im at rerouter with : ", value1, value2, value3)
if value1 is not 0 or None:
if value2 is 0 or None:
if value3 is 0 or None:
return redirect(url_for('welderdatabase', welder_id=value1))
else:
return redirect(url_for('home'))
....
HTML表单在此视图中生成:
@app.route("/", methods=['GET', 'POST'])
@app.route("/home", methods=['GET', 'POST'])
def home():
form = TrialSearchMultipleForm()
return render_template('home.html', title='Home', form=form)
我已经用POST方法成功地实现了这个程序,但是我后来了解到正确的方法是使用GET发送表单数据
我在控制台里看到了什么
127.0.0.1 - - [29/Apr/2019 09:10:20] "GET /rerouter?welder_selector=__None&wps_selector=__None&process_selector=__None&submit=Search HTTP/1.1" 302
Im at rerouter with : __None __None __None
所以我要找的是:
我该怎么解决这个问题
预期结果:
我在重播:无 或 我在重播:1无 (基于输入)
并使用条件成功重定向到页面。 我的代码不是很干净,因为程序的这一部分是不断变化的,我需要保持每件事简短,所以请容忍我
我将非常感谢任何指点或建议或有用的提示
不知道它是否能解决您的问题-只是粗略地看一下您的python脚本
这不是你想的那样。 “无”被认为是假的。您编写的内容相当于以下两个独立的布尔表达式:
因此,表达式中唯一与if语句体是否执行有关的部分是第一部分(value1不是0)。这意味着如果value1为None,那么if语句的主体将不会被执行
另外,假设这是固定的,您可能不想用“or”分隔这两个条件。在我看来,value1不能是这些值中的任何一个,在这种情况下,您将使用“and”
顺便说一句,这可能不是很关键,但我将检查value1是否不等于值0,而不是检查它们的标识是否不相同
然而,根据pep8,当一个人检查某个东西是否为None时,他应该选择(value1不是None)而不是(value1!=无)。在我看来,固定条件是这样的:
相关问题 更多 >
编程相关推荐