从 flask 传递到 JS 的值在 html 中起作用,而不是在静态中

Value passed from flask to JS works in html, not in static

我需要调用 static 文件夹中的 javascript 函数 say_hello 并将 Hello 作为消息传递以显示为警报。这是我的做法:

app.py

from flask import Flask, render_template

app = Flask(__name__)


@app.route('/')
def hello():
    return render_template('index.html', data={'message': 'Hello'})


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

这个有效:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    const message = {{data.message|tojson|safe}}
        alert(message);
</script>
</body>
</html>

这行不通:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script src="/js/hello.js">
    const message = {{data.message|tojson|safe}}
        say_hello(message);
</script>
</body>
</html>

hello.js

function say_hello(message){
    alert(message)
}

JS 控制台没有显示任何问题,也没有显示消息,只是一个空白页面。

<script> 标签有 src 时,其内容将被忽略。一个或另一个。

<script src="/js/hello.js">
</script>
<script>
    const message = {{data.message|tojson|safe}}
        say_hello(message);
</script>