如何使用jinja从python传递null到javascript

时间:2012-06-14 00:07:40

标签: javascript python google-app-engine google-visualization jinja2

我在谷歌应用引擎中做了类似的事情:

self.render('hello.html', value=null)

但很明显,因为python不理解null,所以它认为它是一个未定义的变量,并给出错误。

如果我将其作为字符串发送(value =“null”),则javascript不知道我的意思是null而不是字符串“null”。

那么解决这个问题的方法是什么?

如果它有点相关,我试图将值null传递给javascript中的Google散点图。

2 个答案:

答案 0 :(得分:7)

我假设你正在做类似的事情:

self.render('hello.html', value=[0.1, None, None, 0.5])

并让模板引擎将其转换为字符串,因此最终得到:

 [0.1, None, None, 0.5]

如果是这样,你应该让python将它转换为javascript,然后传递给jinja:

import json
self.render('hello.html', value=json.dumps([0.1, None, None, 0.5]))

那会给你:

[0.1, null, null, 0.5]

这就是我认为你所追求的。

更好的解决方案是添加custom filter to jinja来处理javascript转义。这看起来像是:

import json
def jsonfilter(value):
    return json.dumps(value)

environment.filters['json'] = jsonfilter

然后在你的模板中你可以做到

{{value|json}}

答案 1 :(得分:3)

假设您的模板类似于:

plotdata = [0.1, {{value}}, null, 0.5]

(取决于您使用的模板引擎),然后:

self.render('hello.html', { "value": "null" })

应该导致渲染模板产生:

plotdata = [0.1, null, null, 0.5]

如果这不起作用,请告诉我们您使用的模板引擎,您尝试发送的值以及渲染的确切结果..