Флажок проверен колбой - PullRequest
0 голосов
/ 27 июня 2018

У меня проблема с флажком в форме

<form id="form" action="/findPkgInstalled" role="form" method = "POST">
    <div class="input-group col-xs-4">
      <input type="text" name="pkgSearch" placeholder="Ricerca applicazione non installate..">
      <div class="input-group-btn">
        <button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button>
      </div>
    </div>
    <h6><input type="checkbox" name="filterName" checked>Filtra per nome</h6>
</form>

в то время как в Python у меня есть:

@app.route('/findPkgInstalled', methods=['POST'])
def findPkgInstalled():
    error = None
    pkg = request.form['pkgSearch']
    if not pkg:
        flash(u'Operazione errata, impossibile ricercare stringa vuota','warning')
        return redirect(url_for('listInstalled'))
    else:
        if request.form['filterName'] is 'on':
            appFound = aptsearch(pkg,True)
            return render_template('find-pkg-not-installed.html', appFound = appFound)
        else:
            appFound = aptsearch(pkg,False)
            return render_template('find-pkg-not-installed.html', appFound = appFound)
    return redirect(url_for('listInstalled'))
    box = request.form['filterName']

но это не работает. Сообщено об ошибке 400 Bad Request. Как я могу сделать? Можете ли вы помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 27 июня 2018

Эта ошибка означает, что вы пытаетесь получить объект из вашего пост-запроса, используя неверный ключ. Например, если вы снимите флажок filterName - это вызовет эту ошибку:

request.form['filterName']

Мои советы:

0) Всегда проверяйте свое тело сообщения, чтобы узнать, какие ключи вы можете использовать для получения значений из этого тела.

1) Использование

request.form.get('filterName')

вместо

request.form['filterName']

потому что .get() возвращает None, если такого ключа нет, вместо выдачи исключения внутри колбы, которое приводит к ошибке 400

2) Использование

request.form.get('filterName') == 'on'

вместо

request.form['filterName'] is 'on'

потому что is возвращает True, если две переменные указывают на один и тот же объект в памяти. Я не уверен, что у вас уже есть объект on в памяти процесса

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