从 Flask 中的变量渲染按钮
python 243
原文标题 :Rendering buttons from variables in Flask
我正在尝试使用 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)
routes.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 is just initialising everything, nothing relevant is happening in it.
在 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}}
是什么,因为它直接在上面将它们呈现为文本,因此据我所知,替换两段代码中的值是相同的。因此,我不明白为什么一个有效而另一个无效。