Car*_*eno 6 html python request.form flask
我在 html 文件中有一个表单,该表单正在创建新的输入字段,用户应该在其中输入一些信息。后来,我想将所有这些值传递到我的 python 主文件(application.py)中并用它们做一些事情。问题是我不知道如何将多个值传递到 python 中。通常我会用这个
request.form.get("用户名")
它返回我的 html 文件中名为“username”的输入字段的值。现在,我有几个输入字段,当用户按下按钮时生成:
$("#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)
}
Run Code Online (Sandbox Code Playgroud)
这不是完整的代码,但它可能有助于理解我在说什么。用户可以根据需要多次创建和删除此新字段,因此字段的名称或其 ID 不遵循直接顺序(1、2、3、4...)。我想知道是否可以使用 request.form.get 同一类或具有特定 id 的所有元素从 python 调用,而不仅仅是其中一个的名称
表格示例:
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>
Run Code Online (Sandbox Code Playgroud)
request.form行为类似于字典,您可以使用它request.form.items()来获取所有键和值并过滤它们。
for key, val in request.form.items():
#print(key,val)
if key.startswith("item"):
print(key, val)
Run Code Online (Sandbox Code Playgroud)
或者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))
Run Code Online (Sandbox Code Playgroud)
最少的工作代码:
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)
Run Code Online (Sandbox Code Playgroud)