Django 模板中的“ none”等价于什么?

我想知道在 Django 模板中是否没有字段/变量。正确的语法是什么?

这是我目前拥有的:

{% if profile.user.first_name is null %}
<p> -- </p>
{% elif %}
{{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif%}

在上面的例子中,我将使用什么来替换“ null”?

136776 次浏览

{% if profile.user.first_name %}工作(假设您也不想接受 '')。

在 Python 中,if通常将 NoneFalse''[]{}等视为假的。

None, False and True都可以在模板标记和过滤器中使用。None, False、空字符串('', "", """""")和空列表/元组在使用 if计算时都计算为 False,因此可以很容易地做到这一点

{% if profile.user.first_name == None %}
{% if not profile.user.first_name %}

提示:@Fabiocerqueira 是正确的,将逻辑留给模型,将模板限制为唯一的表示层,并在模型中计算类似的内容。举个例子:

# someapp/models.py
class UserProfile(models.Model):
user = models.OneToOneField('auth.User')
# other fields


def get_full_name(self):
if not self.user.first_name:
return
return ' '.join([self.user.first_name, self.user.last_name])


# template
\{\{ user.get_profile.get_full_name }}

希望这对你有帮助:)

看看 是的助手

例如:

\{\{ myValue|yesno:"itwasTrue,itWasFalse,itWasNone" }}

你也可以使用内置的模板过滤器 default:

如果 value 的计算结果为 False (例如,Nothing 为空字符串,0为 False) ,则显示默认的“——”。

\{\{ profile.user.first_name|default:"--" }}

文件: Https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default

您还可以使用另一个内置模板 default_if_none

\{\{ profile.user.first_name|default_if_none:"--" }}

is 操作符: Django 1.10中新增

{% if somevar is None %}
This appears if somevar is None, or if somevar is not found in the context.
{% endif %}

你可以试试这个:

{% if not profile.user.first_name.value %}
<p> -- </p>
{% else %}
\{\{ profile.user.first_name }} \{\{ profile.user.last_name }}
{% endif %}

通过这种方式,您实际上是在检查表单字段 first_name是否有任何与之关联的值。请参阅 在 Django 文档中循环表单的字段中的 \{\{ field.value }}

我用的是姜戈3.0。

只是关于以前的答案的一个注释: 如果我们想显示一个 字符串,但是如果要显示数字,请注意。

特别是当你有一个0值的 bool(0)计算为 False,所以它不会显示,可能不是你想要的。

在这种情况下,最好使用

{% if profile.user.credit != None %}

在需要验证具有 null值的字段的情况下,我们可以这样检查并按下面的方式处理:

{% for field in form.visible_fields %}
{% if field.name == 'some_field' %}
{% if field.value is Null %}
\{\{ 'No data found' }}
{% else %}
\{\{ field }}
{% endif %}
{% endif %}
{% endfor %}