空的html输入重新调整了Flask-Python的价值特征

时间:2019-06-14 13:26:08

标签: python flask

我是一个简单的问题的前面,但是我正在寻求正确的解决方案...我正在将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的初学者,就像你看到的一样)

1 个答案:

答案 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

如果您有建议或更好的解决方案,我会开放的!