afr*_*oze 2 javascript python google-app-engine google-visualization jinja2
我在谷歌应用引擎中这样做:
self.render('hello.html', value=null)
Run Code Online (Sandbox Code Playgroud)
但很明显,因为python不理解null,所以它认为它是一个未定义的变量并给出错误.
如果我将其作为字符串发送(value ="null"),那么javascript不知道我的意思是null而不是字符串"null".
那么解决这个问题的方法是什么?
如果它有点相关,我试图将值null传递给javascript中的谷歌散点图.
我假设你正在做的事情如下:
self.render('hello.html', value=[0.1, None, None, 0.5])
Run Code Online (Sandbox Code Playgroud)
并让模板引擎将其转换为字符串,因此您最终得到:
[0.1, None, None, 0.5]
Run Code Online (Sandbox Code Playgroud)
如果是这样,你应该让python将它转换为javascript,然后传递给jinja:
import json
self.render('hello.html', value=json.dumps([0.1, None, None, 0.5]))
Run Code Online (Sandbox Code Playgroud)
那会给你:
[0.1, null, null, 0.5]
Run Code Online (Sandbox Code Playgroud)
这就是我认为你所追求的.
更好的解决方案是向jinja添加自定义过滤器以处理javascript转义.这看起来像是这样的:
import json
def jsonfilter(value):
return json.dumps(value)
environment.filters['json'] = jsonfilter
Run Code Online (Sandbox Code Playgroud)
然后在你的模板中你就可以做到
{{value|json}}
Run Code Online (Sandbox Code Playgroud)