一尘不染

将变量从Flask传递到JavaScript

flask

我看过类似的论坛,但无法获得任何有效的解决方案。我正在尝试将变量从Flask传递到我的JavaScript文件。这些值将用于我的JavaScript文件中的PubNub。

这是我的Python代码的一部分:

@app.route("/mysettings/")
def user_settings(): 
        return render_template('Settings.html',  project_name = session['project_name'] , publish_key = session['publish_key'] , subscribe_key = session['subscribe_key'] )

这是我的JavaScript代码(app.js)的一部分:

var settings = {
        channel: {{project_name}},
        publish_key: {{publish_key}},
        subscribe_key: {{subscribe_key}}
    };

如果我在Settings.html文件中使用了此代码,而在app.js文件中却没有使用,则此代码有效。


阅读 1501

收藏
2020-04-05

共1个答案

一尘不染

该mobiusklein答案是相当不错的,但有“黑客”,你应该考虑的问题。定义Javascript方法以接收参数并将数据作为参数发送给函数。

main.py

@app.route('/')
def hello():
    data = {'username': 'Pang', 'site': 'stackoverflow.com'}
    return render_template('settings.html', data=data)

app.js

function myFunc(vars) {
    return vars
}

settings.html

<html>
    <head>
         <script type="text/javascript" {{ url_for('static', filename='app.js')}}></script>
         <script type="text/javascript">
            myVar = myFunc({{vars|tojson}})
         </script>
    </head>
</html>
2020-04-05