使用 Jinja 渲染到 JS 会产生无效的数字而不是字符串

Posted

技术标签:

【中文标题】使用 Jinja 渲染到 JS 会产生无效的数字而不是字符串【英文标题】:Rendering to JS with Jinja produces invalid number rather than string 【发布时间】:2016-01-25 11:52:30 【问题描述】:

我想将一个字符串传递给模板中的一些 javascript。但是,当 JavaScript 运行时,字符串被解释为(无效)数字。如何将字符串传递给 JavaScript 变量?

@app.route('/loadNext')
def loadNext():
    return render_template('next.html', value='1.1.1.1')
$("#loadtable").ready(
    function()
     var tmp =  value ;
     alert(tmp);       
);

【问题讨论】:

假设输出正确,您的代码应该可以工作; jsfiddle.net/yhtxknk1。我只能假设 message.mac[0][0] 没有以 JS 可接受的格式为您提供数组。您是否检查过源到达客户端时的格式? 【参考方案1】:

问题是

 '1.1.1.1' 

呈现为

1.1.1.1

报价不包括在内。 JavaScript 试图将其解析为数字,但不能。幸运的是,Flask 包含一个 Jinja 过滤器。

var tmp =  value|tojson ;

tojson 将在字符串周围包含引号并在数值中省略它们。过滤后的值,当由 Jinja 呈现时,是具有正确类型的有效 JavaScript。

【讨论】:

以上是关于使用 Jinja 渲染到 JS 会产生无效的数字而不是字符串的主要内容,如果未能解决你的问题,请参考以下文章

Vue JS 会渲染大括号而不是结果

网站后端_Python+Flask.0014.FLASK模版相关之使用JinJa2模版渲染?

flask 渲染jinja2模版和传参

使用 jinja2 和 weasyprint 在 PDF 渲染中忽略图像

渲染 Jinja2 宏而不影响模板其余部分的内容

自动化运维工具-Ansible Jinja2模板