Обработка значений в Flask-Python, возвращаемая пустым вводом html - PullRequest
1 голос
/ 14 июня 2019

Я стою перед простой проблемой, но поворачиваюсь вокруг правильного решения ... Я использую postgreSQL с Flask для создания небольшого веб-приложения.Итак, у меня есть код Python и один шаблон, чтобы показать вам мою проблему.У меня есть 16 простых вводов HTML с данными из моей базы данных, обработанных моим кодом 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» пуст и возвращает «None», как я прочитал?И вот что происходит в моей консоли:

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 он должен быть НЕДЕЙСТВИТЕЛЕН, поэтому введите в else: часть цикла?

Где моя ошибка?Ввод не возвращает «Нет», когда пуст?Или мой цикл Python плохой (я начинающий в Python, как вы можете видеть)

1 Ответ

0 голосов
/ 14 июня 2019

Я наконец-то нашел свою ошибку благодаря комментарию 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] reference 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

Если у вас есть прототипы или лучшее решение, я открыт!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...