为了账号安全,请及时绑定邮箱和手机立即绑定

在flask程序中,将变量name传到前台js代码中通过{{ name }}显示不正常

在flask程序中,将变量name传到前台js代码中通过{{ name }}显示不正常

慕容森 2018-12-19 18:15:36
在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>

加上两个英文字符的双引号即可。


查看完整回答
反对 回复 2019-01-26
  • 1 回答
  • 0 关注
  • 1010 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信