4

我在谷歌应用引擎中做了这样的事情:

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

但显然,由于 python 不理解 null 它认为它是一个未定义的变量并给出错误。

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

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

如果它有点相关,我正在尝试将值 null 传递给 javascript 中的谷歌散点图。

4

2 回答 2

8

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

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

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

 [0.1, None, None, 0.5]

如果是这样,您应该在传递给 jinja 之前让 python 将其转换为 javascript:

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

这会给你:

[0.1, null, null, 0.5]

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

一个更好的解决方案是向 jinja 添加一个自定义过滤器来处理 javascript 转义。这看起来像:

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

environment.filters['json'] = jsonfilter

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

{{value|json}}
于 2012-06-14T04:12:44.577 回答
3

假设您的模板看起来像:

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

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

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

应该导致渲染的模板产生:

plotdata = [0.1, null, null, 0.5]

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

于 2012-06-14T02:47:53.830 回答