在flask程序中,将变量值传到前台,在html代码中这样写{{ payment_uid }}能正常显示,但是在js代码中这样写{{ payment_uid }}显示不正常,我感觉是不是在js代码中转化成数值型了?、
flask代码
# coding:utf-8
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
name = '012'
return render_template('index.html', name=name)
if __name__ == '__main__':
app.run()
html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ name }}
</body>
<script>
alert({{ name }})
</script>
</html>
显示结果为
如果把变量name的值换为'abc'非数字的,则在js代码中不显示。
我很好奇这是为什么???
首先来解析一下 js 代码。
在
name=012
的情况下,jinja2 代码解析为 html 的内容如下也就是说你这是直接操作
alert(012)
。这里有一个凸显我的知识储备不足的地方,就是为什么
alert(012)
之后显示是10
,我粗略的测试了一下。从 1~9 ,如果前面加 0 的话,还是显示 1~9, 如果从 10~19 那么前面加 0 的话会出现不一样的效果,比如 010 对应的是 8 ,011 对应的是9,一直到 017,最终显示结果总是得减 2, 但是 018, 019还是显示原数字,我是不明觉厉了。而当你换成非数字的值的时候,则直接操作
alert(abc)
,那么这时,就会报 abc 变量未定义的错误。因此你的代码需要改为如下内容:
加上两个英文字符的双引号即可。