Отображение нескольких переменных flask из разных форм одновременно в шаблоне HTML - PullRequest
0 голосов
/ 31 марта 2020

У меня есть 2 отдельные формы в шаблоне html, называемые запросами. html, одна для ввода названия компании и одна для ввода ключевых слов, как показано ниже.

 <form method="POST">  
   <p>Enter Company Name:</p>
   <p><input type="text" name="company_name"></p>
   <p><input type="submit" value="submit"></p>
 </form>

  <p> Name: {{ name }} </p>


 <form method="POST">  
    <p>Enter Keywords:</p>
    <p><input type="text" name="keywords"></p>
    <p><input type="submit" value="submit"></p>
 </form>

   <p> Keywords: {{ keywords }}</p>

Я хочу, чтобы можно было отображать входные данные формы в тегах абзаца под каждой формой. Ниже приведен соответствующий flask код:

    @app.route('/queries/', methods=['GET', 'POST'])
    def queries():
    if request.method == 'POST':
        if request.form['company_name']:
            name = request.form['company_name']
            return render_template('queries.html', name=name)
        elif request.form['keywords']:
            keywords = request.form['keywords']
            return render_template('queries.html', keywords=keywords)
    return render_template('queries.html')

Мои проблемы, во-первых, при вводе названия компании отображаются нормально, когда элемент {{name}} находится на своем месте, но при вводе ключевого слова I получить ошибку «неверный запрос». Во-вторых, ранее у меня работали оба ввода, но когда я использовал одну форму, она стирала отображаемые данные с другой, например, при вводе ключевого слова после уже введенного и отображенного названия компании ключевое слово появилось бы в {{ ключевое слово}}, но название компании исчезнет. После некоторых исследований мне может понадобиться использовать AJAX, чтобы все элементы отображались, но я не уверен, смотрю ли я в правильном направлении. Похоже, это должно быть относительно простым вопросом, пожалуйста, помогите! Заранее спасибо за любые ответы.

1 Ответ

0 голосов
/ 31 марта 2020

Вместо:

request.form['company_name']
request.form['keywords']

Используйте это:

request.form.get("company_name")
request.form.get("keywords")

Flask выдает ошибку, если в форме ввода нет значения. Используя form.get, flask попытается получить значение и обработает его, если значения не будет.

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