如何在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 对象作为参数发送?