从 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>
我需要调用 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>