从 Flask 中的变量渲染按钮

xiaoxingxing 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>

呈现如下:

Rendering of the page

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}}是什么,因为它直接在上面将它们呈现为文本,因此据我所知,替换两段代码中的值是相同的。因此,我不明白为什么一个有效而另一个无效。

原文链接:https://stackoverflow.com//questions/71599743/rendering-buttons-from-variables-in-flask

回复

我来回复
  • N. Arunoprayoch的头像
    N. Arunoprayoch 评论

    那是因为

    <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
    
    2年前 0条评论