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