我正在嘗試使用 Flask 創建一個頁面,該頁面具有在代碼的 python 部分而不是 HTML 部分中定義名稱和操作的按鈕。
代碼的最小作業示例如下所示:main.py:
from flask import Flask
def init_app():
"""Construct core Flask application with embedded Dash app."""
app = Flask(__name__)
with app.app_context():
# Import parts of our core Flask app
import routes
return(app)
app = init_app()
if __name__ == "__main__":
app.run(debug = True)
路線.py:
from flask import render_template, redirect, request
from flask import current_app as app
@app.route('/', methods=['GET', 'POST'])
def home():
if request.method == 'POST':
print(request.form.get('test_action'))
print(request.form.get('extra_action'))
elif request.method == 'GET':
return render_template('buttons.html', form="form", extra_name = "Extra_Name", extra_action = "extra_action")
return render_template("buttons.html", extra_name = "Extra_Name", extra_action = "extra_action")
和模板/buttons.html
<form method="post" action="/">
<h4>button name: TEST</h4>
<h4>button action: test_action</h4>
<input type="submit" value="TEST" name="test_action"/>
<h4>button name: {{extra_name}}</h4>
<h4>button action: {{extra_action}}</h4>
<input type="submit" value={{extra_name}} name={{extra_action}}/>
</form>
呈現如下:

main.py 只是初始化所有內容,其中沒有發生任何相關的事情。
在 routes.py 中,按鈕名稱和操作名稱被傳遞給 HTML 代碼。HTML 代碼創建了兩個按鈕:一個使用硬編碼到其中的名稱,另一個使用取自 Flask 的名稱。然后 routes.py 列印它從每個按鈕獲得的值。例如,當程式第一次啟動時,它會列印
None
None
如果按下 TEST 按鈕,它將列印
TEST
None
現在,據我了解,當按下 Extra_name 按鈕時,它應該輸出
None
Extra_name
如果我自己將 Extra_name 和 extra_action 放入它們應該在 HTML 中去的地方,這也是它的作業原理,但它卻給出了
None
None
我知道 HTML 可以看到什么{{extra_name}}和{{extra_action}}是什么,因為它直接在上面將它們呈現為文本,因此據我所知,替換兩段代碼中的值是相同的。因此,我不明白為什么一個有效而另一個無效。
uj5u.com熱心網友回復:
那是因為
<input type="submit" value={{extra_name}} name={{extra_action}}/>
會給你extra_action/而不是extra_action
您可以通過使用修復它
<input type="submit" value={{extra_name}} name={{extra_action}}></input>
結果:
None
Extra_Name
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/451630.html
