是否可以在render_template之前将数据传递给Flask?

时间:2017-12-18 00:59:08

标签: javascript python flask

我有一个简单的Flask功能,可以为我呈现一个页面:

@app.route('/')
def main_page():
    return render_template("index.html")

我的问题是,可以将位于我的index.html文件中的Javascript函数中的变量传回Flask的main_page函数,然后才能获得该函数完全渲染?

这是我的html文件:

<head>
    <title>My Title</title>
</head>
<body>
// HTML content
<script>
firebase.auth().onAuthStateChanged(firebaseUser => {
    if (firebaseUser) {
        var myVar = "content"
    } 
});
</script>
</body>

我正在考虑这样的事情:

@app.route('/')
def main_page():
    # 1. get the myVar variable from the JS code located in the same index.html page
    # 2. check the variable and pass a variable to the Jinja template based on myVar's content
    if myVar is something:
        return render_template("index.html", text = "something A")
    else:
        return render_template("index.html", text = "something B")

所以我不想从文本字段中获取内容,我将通过JS代码接收它。我想加载'/'路由一次,并根据myVar变量的内容决定传入Jinja模板的数据。如果不可能,是否有任何技巧或替代技术可以产生几乎相同的结果?

1 个答案:

答案 0 :(得分:1)

鉴于您正在访问第三方API而未将应用程序中的任何数据保存到数据库,因此无需向烧瓶应用程序发出HTTP请求。可以在客户端处理状态,只需更新HTML w / JQuery。

// in callback
$('target').val('newval');