我是一个简单的问题的前面,但是我正在寻求正确的解决方案...我正在将PostgreSQL与Flask结合使用来做一些小的Web应用程序。因此,我有我的python代码和一个模板来向您展示我的问题。我的数据库中有16个简单的HTML输入,带有dataliste的数据列表,以我的python代码为特征,我想在第一次空输入遇到问题时就中断信息的处理。我已经做到了:
模板
{% for i in range(16)%}
<input type="text" name="agent{{i}}" list="agent{{i}}" placeholder="Nom, prénom ou matricule ">
<datalist id="agent{{i}}">
{% for row in rows %}
<option value="{{row[0]}};{{row[1]}};{{row[2]}}">Nom:{{row[0]}} Prénom:{{row[1]}} Mat:{{row[2]}}</option>
{% endfor %}
</datalist>
{% endfor %}
<input type="submit" value="Valider">
之后,我检索了要通过以下代码处理的信息:
.py
def after_choix_agent_inscription(error=None):
print ('Enter in loop')
for i in range(16):
test =request.form['agent{}'.format(i)]
if not (test is None):
print('Loop n°',i)
tab = request.form['agent{}'.format(i)].split(';')
#futur insertion in my database here with data collected
else:
print('Break at n°',i-1,'input is empty')
break
return render_template('Succes.html')
在我的示例中,我填写了6个输入,因此名为“ agent6”的输入为空,并且像我读过的一样返回“无”?这就是我的控制台中发生的情况:
Loop n° 0
Loop n° 1
Loop n° 2
Loop n° 3
Loop n° 4
Loop n° 5
Loop n° 6
Loop n° 7
Loop n° 8
Loop n° 9
Loop n° 10
Loop n° 11
Loop n° 12
Loop n° 13
Loop n° 14
Loop n° 15
在循环6处应该为NULL,因此请输入else:循环的一部分?
我的错误在哪里?输入为空时不返回“无”吗?否则我的Python循环不好(我是python的初学者,就像你看到的一样)
答案 0 :(得分:0)
由于InfiniteHigh的评论,我终于找到了自己的错误。我有一个解决方案,虽然不是最佳解决方案,但它确实有效。我输入的值类似于{{X}}; {{Y}}; {{Z}},即使我的输入为空,他的返回也不是。所以我对返回值执行.split(;),并检查空字符串处X是否为==,并且有效:
@app.route('/after_choix_agent_inscription', methods=['POST'])
def after_choix_agent_inscription(error=None):
print ('Enter in loop')
for i in range(16):
reference=""
test=request.form['agent{}'.format(i)].split(';')
if not (test[0] == reference):
print('Loop n°',i)
else:
print('Break after',i-1, 'empty input')
break
return render_template('Succes.html')
在这里,test [0]引用X我仅在测试这个,如果也是空的,我也在测试。
它在第5循环后正确中断了:
Loop n° 0
Loop n° 1
Loop n° 2
Loop n° 3
Loop n° 4
Loop n° 5
Break after 5 empty input
如果您有建议或更好的解决方案,我会开放的!