【问题标题】:Displaying multiple flask variables from different forms at once in HTML template在 HTML 模板中一次显示来自不同表单的多个烧瓶变量
【发布时间】:2020-07-12 09:01:51
【问题描述】:

我在一个名为 queries.html 的 html 模板上有 2 个单独的表单,一个用于输入公司名称,一个用于输入关键字,如下所示。

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

我希望能够在每个表单下方看到的段落标签中显示表单输入。 下面是相关的烧瓶代码:

    @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 }} 元素应有的位置显示正常,但在输入关键字时出现“错误请求”错误。其次,我以前确实有两个输入都可以工作,但是当我使用一种形式时,它会从另一种形式中擦除显示的数据,例如在已经输入并显示公司名称后输入关键字时,关键字将按原样出现在{{关键字}}元素中,但公司名称会消失。经过一些研究,我可能需要使用 AJAX 来保持所有元素的显示,但不确定我是否在寻找正确的方向。看来这应该是一个比较简单解决的问题,请大家帮忙!提前感谢任何回复。

【问题讨论】:

    标签: python html ajax flask multiple-variable-return


    【解决方案1】:

    代替:

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

    使用这个:

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

    如果表单输入中没有值,Flask 会抛出错误。使用 form.get 烧瓶将尝试获取值并在没有值时进行处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 2017-09-01
      • 2020-01-27
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      相关资源
      最近更新 更多