问题:django模板中的“ none”是什么意思?
我想看看Django模板中是否没有字段/变量。正确的语法是什么?
这是我目前拥有的:
{% if profile.user.first_name is null %}
<p> -- </p>
{% elif %}
{{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif%}
在上面的示例中,我将用什么来替换“空”?
回答 0
None, False and True
所有这些都可在模板标记和过滤器中找到。None, False
,空字符串('', "", """"""
)和空列表/元组False
都由进行求值if
,因此您可以轻松地执行
{% 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 }}
希望这可以帮助 :)
回答 1
您还可以使用其他内置模板 default_if_none
{{ profile.user.first_name|default_if_none:"--" }}
回答 2
is
运算符:Django 1.10中的新增功能
{% if somevar is None %}
This appears if somevar is None, or if somevar is not found in the context.
{% endif %}
回答 3
回答 4
{% if profile.user.first_name %}
起作用(假设您也不想接受''
)。
if
在Python一般对待None
,False
,''
,[]
,{}
,…所有为假。
回答 5
您还可以使用内置的模板过滤器default
:
如果value的值为False(例如None,一个空字符串,0,False);默认显示为“-”。
{{ profile.user.first_name|default:"--" }}
文档:https : //docs.djangoproject.com/en/dev/ref/templates/builtins/#default
回答 6
您可以尝试以下方法:
{% if not profile.user.first_name.value %}
<p> -- </p>
{% else %}
{{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif %}
这样,您实际上是在检查表单字段first_name
是否具有与其关联的任何值。见{{ field.value }}
在循环遍历Django文档形式的领域。
我正在使用Django 3.0。