我对django很新,但是在java世界中有多年的编码经验,所以我觉得这个问题很荒谬 - 我确信答案是显而易见的,我只是错过了它。我似乎无法找到正确的方式在谷歌或其他东西中查询...我已经搜索了django文档,它要么不存在,要么我只是没有看到它。我想要做的就是在模板测试中,如果var不是null或者是一个空字符串,或者只是一堆空格。我有一个问题,空间被引入我的领域 - 我必须要做的另一个问题,并且会解决......但是,我希望我的逻辑无论如何都能工作。现在,因为我的字符串只包含空格只是这样做:{%if lesson.assignment%}总是通过,即使我不想要它。我找了一个可以在{%%}之间工作的修剪类型功能,但我似乎找不到任何东西。我尝试过strip,但它在{%%}之间不起作用。有人可以指点我的答案方向......我可能错过了一些文件吗?
提前感谢!
答案 0 :(得分:53)
{% if lesson.assignment and lesson.assignment.strip %}
.strip
调用str.strip()
,因此您可以将仅空白字符串处理为空,而前面的检查确保我们首先清除None
(不会有{{1}方法)
证明它有效(在.strip()
中):
./manage.py shell
答案 1 :(得分:5)
如果lesson.assignment
是模型字段,您可以在模型中定义辅助函数并使用它:
class Lesson(models.Model):
assignment = models.CharField(..., null=True, ...)
# ...
@property
def has_assignment(self):
return self.assignment is not None and self.assignment.strip() != ""
然后在模板中使用{% if lesson.has_assignment %}
。
答案 2 :(得分:5)
发布问题时可能无法使用此选项,但有一个选项可能是使用内置模板过滤器default_if_none
(Django Documentation Link)。
例如:
{{ lesson.assignment|default_if_none:"Empty" }}
答案 3 :(得分:1)
您可以使用cut
filter来删除所有空格来模拟它。但你应该首先找出它为什么包含所有空格。
答案 4 :(得分:0)
您可以在Django模板变量中的任何位置调用任何内置方法。例如,您可以调用Python字符串方法strip
。所以这将有效:
{% if lesson.assignment.strip %}