如何在javascript中检查Django对象是不是为None?

Posted

技术标签:

【中文标题】如何在javascript中检查Django对象是不是为None?【英文标题】:How to check if Django object is None in javascript?如何在javascript中检查Django对象是否为None? 【发布时间】:2016-12-29 16:36:00 【问题描述】:

js中如何判断一个Django对象是否为None?

我目前有一个变量person 存储一个Django 对象或None。在我的 js 中,我有:

if (person != None) 
    execute_function(person)

这里似乎有什么问题?

【问题讨论】:

What is the equivalent of "none" in django templates?的可能重复 试试if (person != "None")。或者你可以使用 Django % if % 而不是 javascript 您无法使用客户端 javascript 访问 django 对象 当它被解释为 JavaScript 时,它已经不是 Django 对象了。 Django 模板在服务器上解析并将结果发送到浏览器。当浏览器加载页面时,JavaScript 开始运行。您可以在 JavaScript 代码中测试 django 对象将输出到 html 的文本。 【参考方案1】:

这对我有用:

% if person != None %
    var p = ...
    ...
% endif %

【讨论】:

【参考方案2】:

John Smiths 的回答最有意义,请在 Django 的模板中查看。 其实更好的是:

% if person %
    execute function
% endif%

如果您需要使用 JavaScript 检查它,JavaScript 使用 null 而不是 None,因此假设 JavaScript 代码也在 Django html 模板中(而不是作为外部文件加载),这应该可以工作。

if (person != null) 
    execute_function(person)

编辑:

添加更多细节: 这可能会被解析为:

if (john != null)
    execute_function(john)

JavaScipt 不会理解 john ,但它会理解引用的版本 'john' :

if ('john') != null)
    execute_function('john')

实现这一点的最简单方法是向 Person 模型添加一个模型方法。

Class Person(models.Model):
    ...field definitions here.

    def quoted_name(self):
        return "'%s'" % self.name

然后在模板中(并且空字符串评估为假):

if (person.quoted_name ) 
    execute_function(person.quoted_name )

【讨论】:

实际上,您可能需要有条件地引用 person 的输出,否则 JavaScript 会将其视为未声明的变量。我个人会在 person 上定义一个模型方法(在 Django 中),以返回 person 将输出到模板的引用版本。 person.quoted_name 或类似的东西。 您能否澄清引用版本的含义或提供示例?

以上是关于如何在javascript中检查Django对象是不是为None?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Javascript 中将 Django 对象作为参数发送?

如何检查对象是不是在 JavaScript 中具有特定属性?

检查所有对象是不是属于一个列表 django

如何在 JavaScript 中检查对象的值? [复制]

如何检查 Javascript 对象

如何检查对象是否是JavaScript中的常规对象