如何使用 jinja 从 python 将 null 传递给 javascript

How to pass null to javascript from python using jinja

本文关键字:javascript null 何使用 jinja python      更新时间:2023-09-26

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

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

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

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

那么有什么方法可以解决这个问题呢?

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

我假设你正在做这样的事情:

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

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

 [0.1, None, None, 0.5]

如果是这样,你应该让python在传递给jinja之前将其转换为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}}

假设您的模板如下所示:

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

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

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

应导致呈现的模板生成:

plotdata = [0.1, null, null, 0.5]

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