Flask:通过单击 HTML 按钮渲染动态模板

问题描述 投票:0回答:1

我是一个烧瓶新手,我想知道如何通过按下另一个模型中的按钮来动态渲染模型中的模板。类似的东西

<button href='/view'>Render Content</button>

我想要渲染这段代码

{% this_has_to_be_true %}
<div id="somediv"></div>
{% endif %}

有什么功能可以让我这样做吗?请注意,我不想显示代码 当我向视图发出正常的 GET 请求时

/view

提前致谢。

我尝试使用flask

url_for
函数并尝试在其中传递参数,但它不起作用。比如:

@app.route('/view/<param>')
def fun(param):
    if param:
        render_template('template.html',this_has_to_be_true=param)
    else:
        render_template('template.html')

我收到了一个错误,例如here,它也不适合我的路线,因为它修改了我的子域的构建方式(我认为 /view/like 之类的东西无法正常工作)。 我还尝试使用另一条路线 /view-supp 并使用 jquery 并创建另一条路线 /view-supp 但同样,我不知道如何重定向。

python flask jinja2
1个回答
0
投票

将 javascript 与 onclick 事件(用于按钮)结合使用,其 href 值会导致

new_template.html
。 new_template.html 的内容将由 python 文件渲染。

编辑:同样的事情也可以在没有 javascript 的情况下完成(即)使用

<button href = "/new-template">Submit</button>
。但这里会发生整页重新加载,并且过渡不会更平滑。为了良好的用户体验,javascript很重要。

带按钮的 HTML(index.html)

<!DOCTYPE html>
<html>
<head>
    
</head>
<body>
    
    <button id="new_temp">Submit</button>

    <script>
        document.getElementById("new_temp").addEventListener("click", function() {
            window.location.href = "/new-template";
        });
    </script>
</body>
</html>

Python

from flask import Flask as fl
from flask import render_template as tmp

app = fl(__name__)

@app.route("/")
def index(): return tmp("index.html")

@app.route("/new_template")
def new_template():
    txt = "This is the new template content!"  
    return tmp("new_template.html", data=txt)

if __name__ == '__main__': app.run()

HTML(新模板.html):

HTML
<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <h1>{{ data }}</h1>
</body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.