【问题标题】:Display flask variables simultaneously in html template在 html 模板中同时显示烧瓶变量
【发布时间】:2020-04-01 08:26:01
【问题描述】:

我在一个名为 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':
        name = request.form.get('company_name')
        keywords = request.form.get('keywords')
        return render_template('queries.html', name=name, keywords=keywords)
    return render_template('queries.html')

我的问题是,当我在其中一个表单中输入信息时,另一个变量会重置为无。无论其他表单提交如何,我都希望继续显示每个表单中的信息。在此先感谢

【问题讨论】:

    标签: python html flask


    【解决方案1】:

    您可以通过使用一个表单(两个字段的数据都回传)并为两个提交按钮赋予不同的值来实现此目的。在 POST 处理中,您将能够识别单击了哪个按钮并相应地处理数据。

    例如:

    <form method="POST">
       <p>Enter Company Name:</p>
       <p><input type="text" name="company_name"></p>
       <p><input type="submit" name="submit" value="company"></p>
    
        <p> Name: {{ name }} </p>
    
    
        <p>Enter Keywords:</p>
        <p><input type="text" name="keywords"></p>
        <p><input type="submit" name="submit" value="keywords"></p>
     </form>
    
     <p> Keywords: {{ keywords }}</p>
    
    
    @app.route('/queries/', methods=['GET', 'POST'])
    def queries():
        if request.method == 'POST':
    
            name = request.form.get('company_name')
            keywords = request.form.get('keywords')
    
            if request.form['submit'] == 'company':
                # process company submit
                return render_template('queries.html', name=name, keywords=keywords)
    
            if request.form['submit'] == 'keywords':
                # process keywords submit
                return render_template('queries.html', name=name, keywords=keywords)
    
            return render_template('queries.html', name=name, keywords=keywords)
    
        return render_template('queries.html')
    

    【讨论】:

    • 现在这两个输入都会出现 400 Bad Request 错误,因此两者都不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多