4

我在一个 html 文件中有一个表单,这个表单正在创建新的输入字段,用户应该在其中输入一些信息。稍后,我想将所有这些值传递到我的 python 主文件(application.py)中并用它们做一些事情。问题是我不知道如何将几个值传递给 python。通常我会用这个

request.form.get("用户名")

它返回我的 html 文件中名为“用户名”的输入字段的值。现在,我有几个在用户按下按钮时生成的输入字段:

$("#add_dream").click(function(){
    $("#"+x).append('<button type="submit" style="height:30px;" class="delete" 
    id="ix">Remove</button>')
    document.getElementById("ix").setAttribute("id","delbuttdream"+j)
}

这不是全部代码,但它可能有助于理解我在说什么。用户可以根据需要多次创建和删除此新字段,因此字段名称或其 ID 不遵循直接顺序(1、2、3、4...)。我想知道是否有任何方法可以使用 request.form.get 从 python 调用同一类或具有特定 id 的所有元素,而不仅仅是其中一个的名称

4

1 回答 1

3

示例表格:

Items in random order</br>
<form method="POST">
<input name="item4" value="val4"/></br>
<input name="item2" value="val2"/></br>
<input name="item1" value="val1"/></br>
<input name="item3" value="val3"/></br>
<button type="submit">OK</button>
</form>

request.form行为类似于字典,您可以使用它request.form.items()来获取所有键和值并过滤它们。

for key, val in request.form.items():
    #print(key,val)
    if key.startswith("item"):
        print(key, val)

request.form.keys()仅获取对它们进行过滤和排序的键。

keys = request.form.keys()
keys = [key for key in keys if key.startswith("item")]
keys = sorted(keys)

for key in keys:
    #print(key, request.form[key])
    print(key, request.form.get(key))

最小的工作代码:

from flask import Flask, request, render_template_string

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':

        print('--- original order ---')

        for key, val in request.form.items():
            if key.startswith("item"):
                print(key, val)

        print('--- sorted ---')

        keys = request.form.keys()
        keys = [key for key in keys if key.startswith("item")]
        keys = sorted(keys)

        for key in keys:
            #print(key, request.form[key])
            print(key, request.form.get(key))

    return render_template_string('''Items in random order</br>
<form method="POST">
<input name="item4" value="val4"/></br>
<input name="item2" value="val2"/></br>
<input name="item1" value="val1"/></br>
<input name="item3" value="val3"/></br>
<button type="submit">OK</button>
</form>
''')

if __name__ == '__main__':
    app.run(debug=True)
于 2019-09-30T07:06:21.467 回答