如何在Django模板中使用'is not None'?

时间:2016-03-18 14:01:13

标签: python django django-templates

我想在我的主页上自定义问候语,这是:

登录后输入名字:

  

约翰!你想去哪里?

否则:

  

你想去哪里?

这是我的模板:

 {% if user.is_authenticated and not firstname_of_logged_user == None%}
 <h1 class="text-center" id="extraglow">{{firstname_of_logged_user}}! where do 
 you want to go?</h1></label>
{%else%}
<h1 class="text-center" id="extraglow">where do you want to go?</h1></label>
                                {%endif%}

但是,它似乎没有选择“not None”部分,因为如果用户已登录但未输入名字,则显示如下:

  

!你想在哪里   去吗?

如果我说:

firstname_of_logged_user is not None

它说错误:

  

在表达式结束时未使用'是'。

看起来似乎很简单,但它不起作用。怎么了?干杯!

3 个答案:

答案 0 :(得分:4)

您可以使用.settings .name { text-align: left; } .settings .value { text-align: center; } .settings .edit { text-align: right; } 运算符代替!=。但是,事情可以进一步简化为:

not

以上内容将检查您的模板中{% if user.is_authenticated and firstname_of_logged_user %} 是否真实。

答案 1 :(得分:3)

自Django 1.10(release notes)以来,if模板标记已支持is运算符。

您现在可以{% if x is None %}{% if x is not None %}

答案 2 :(得分:2)

不支持is运算符。只需使用{% if var != None %}即可。这不完全相同,但对大多数情况来说已经足够了。

请参阅supported operators here

如果您确实想使用is运算符,则必须将其实现为自定义模板标记。

例如:

@register.filter
def is(lhs, rhs):
    return lhs is rhs

因此,您将能够将其用作:

{% if var1|is:var2 or not var3|is:var4 %}
    ...
{% else %}
    ...
{% endif %}