flask:如何构建一个与HTML下拉列表接口的POST端点



所以我有一个sqlite-db文件,我使用python脚本生成了该文件,我正在读取该文件,以向Flask端点提供信息。

端点解析数据库中的项目,并生成一个dict对象,我随后将其传递给Jinja模板:

@app.route('/endpoint', method=['GET', 'POST'])
def someFunction:
    << generate finalDict via db queries >>
    return render_template('whatever.html', **"finalDict": finalDict})

whatever.html然后呈现引导表,即

<table>
   <tr>
      <th>
         Header 1
      </th>
      ...
   </tr>
   <tr>
     <td>
        {{ finalDict['someitem'] }}
     </td>
     ...
   </tr>
</table>

到目前为止,一切都很好,正如我所希望的那样。

我想做的是在我的表中有一个最后一列,它将包含一个下拉菜单,允许用户对该行中的项目进行分类。

因此,如果行看起来像ID | name | whatever,那么它将有一个最终的| [dropdown],它将允许用户选择一个分类,这将始终是三种可能性之一。

我真正想知道的是如何构建HTML,大概还有端点中的if request.method == 'POST':捕获,以适当地更新数据库。

是否可以将整个表视为form对象,然后在用户使用上面的catch单击提交按钮后对其进行解析?

如果没有,考虑到我在这里想做的事情,构建事物的最佳方式是什么?

我真正想知道的是如何构建HTML

你会想要一个简单的HTML选择与你的3个选项:

<form name="category_form" id="category_form" action="/endpoint">
    <select name='category' id='category'>
        <option value='1'>Option 1</option>
        <option value='2'>Option 2</option>
        <option value='3'>Option 3</option>
    </select>
</form>

然后,当选择下拉菜单时,使用ajax POST到您的端点。例如,使用jQuery:

$(document).ready( function() {
    var form = $('#category_form');
    form.find('#category').change(function(){
        $.ajax({
            type: "POST",
            url: form.attr('action'),
            data: form.serialize(),
            success: function(response) {
                //optionally do something
            }
        });
    });
});

大概是在端点中执行if request.method=="POST":catch,以适当地更新数据库。

你就是这么做的:-)

if request.method == 'POST':
    data = request.form
    #do something with data

data将是您提交给端点的表单中的数据。

查看请求对象的文档以及如何使用它。

相关内容

最新更新