一尘不染

在外部Javascript中使用Python Flask传递参数

javascript

我在网站上使用Python Flask,并将一些参数传递给Javascript。这是我的代码:

from flask import Flask
from flask import render_template

app = Flask(__name__)


@app.route("/")
def index():

    return render_template("index.html", param1="Hello")


<html>
   <head>
   </head>
   <body>
      <p>Hello World</p>
   </body>
   <script>console.log({{param1}})</script>
</html>

通过这种方式,它可以正常工作。这个例子是我自己的简化。但是,如果我要将脚本放在外部文件上并这样调用:

<html>
   <head>
   </head>
   <body>
      <p>Hello World</p>
   </body>
   <script src="/static/js/myjs.js"></script>
</html>

而该myjs.js文件是console.log({{param1}}),则该文件不起作用。那么,有什么方法可以使用Python
Flask在外部Javascript文件中传递参数?


阅读 893

收藏
2020-05-01

共1个答案

一尘不染

如果要使用Jinja渲染文件,则需要调用该文件并将render_template其传递给所需的值。仅仅直接链接到静态文件显然不会这样做。一种解决方案是使用Jinja的include块。这要求“
myjs.js”位于“ templates / js”文件夹中,并将其包含在呈现的模板中,并将所有模板上下文传递给所包含的模板。

<script>{% include 'js/myjs.js' %}</script>

更好的 解决方案是不需要渲染在每次请求的JS,而是从你的模板参数传递给JS的功能。

<script src="{{ url_for('static', filename='js/myjs.js') }}"></script>
<script>
    my_func({{ my_var|tojson }});
</script>
2020-05-01