将变量从 Flask 传递到 JavaScript

新手上路,请多包涵

我查看了类似的论坛,但无法获得任何解决方案。我正在尝试将变量从 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 文件中使用此代码,则此代码有效。

原文由 pang 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

mobiusklein 的答案非常好,但您应该考虑“hack”。定义您的 Javascript 方法以接收参数并将数据作为参数发送到您的函数。

主程序

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

应用程序.js

 function myFunc(vars) {
    return vars
}

设置.html

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

原文由 Mauro Baraldi 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 @mauro 提到的简单示例将变量从 flask 视图传递到模板再到 javascript 文件的简单方法。

主程序

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

设置.html

 <html>
    <head>
         <script type="text/javascript">
            var username = {{ data.username }}
            var site = {{ data.site }}
        </script>
        <script type="text/javascript" src="app.js"></script>
    </head>
</html>

应用程序.js

 function myFunc() {
    return username + site
}

原文由 shrishinde 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏