我正在努力弄清楚如何訪問<input>通過 for 回圈創建的單個元素。例如:
<form id="score" method="POST" action="/div">
<div class="formInput">
{% for i in range(2) %}
<input type="text" class="sFixed" id="scoreFixed">
{% endfor %}
</div>
</form>
如您所見,我input在表單中創建了兩個元素。但是,如果我嘗試檢索通過 Python Flask 應用程式輸入的資料,則只能獲取第一個輸入,而不能獲取第二個。這是我嘗試檢索資料的方式。
@app.route('/div', methods=['POST'])
def div_post():
scoreFixed = request.form.get('scoreGame')
print(scoreFixed)
return redirect('/')
請幫我弄清楚如何從表單中創建的兩個元素中檢索輸入。
uj5u.com熱心網友回復:
每個id只能在 html 檔案或表單中存在一次。您可以使用模板中的 for 回圈索引來設定唯一 ID。
{% for i in range(2) %}
<input type="text" class="sFixed" id="scoreFixed_{{i}}">
{% endfor %}
在您的燒瓶端點中,您可以像這樣訪問分數
scores = []
for i in range(2):
score = request.form.get(f"score_Fixed_{i}")
scores.append(score)
uj5u.com熱心網友回復:
首先:您必須使用name=而不是id=獲取它Flask
(并且可能在其他框架/語言中您也必須使用name而不是id)。
第二:您可以使用getlist("scoreFixed")獲取所有具有相同名稱的元素。
第三:你需要button發送它。
最小作業示例:
from flask import Flask, request, render_template_string
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
print('args :', request.args)
print('form :', request.form)
print('json :', request.json)
print('files:', request.files)
print('scoreFixed:', request.form.getlist("scoreFixed"))
return render_template_string('''<form method="POST">
{% for i in range(2) %}
<input type="text" name="scoreFixed" ></br>
{% endfor %}
<button type="submit">SEND</button>
</form>''')
if __name__ == '__main__':
#app.debug = True
app.run()
值的結果a,b
args : ImmutableMultiDict([])
form : ImmutableMultiDict([('scoreFixed', 'a'), ('scoreFixed', 'b')])
json : None
files: ImmutableMultiDict([])
scoreFixed: ['a', 'b']
當然,您可以使用{{ i }}添加數字來name分別獲取每個值
{% for i in range(2) %}
<input type="text" name="scoreFixed_{{ i }}" ></br>
{% endfor %}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/371029.html
標籤:Python html 蟒蛇-3.x 烧瓶 jinja2
