Django模板标签条件

时间:2013-04-29 18:27:28

标签: django django-templates

如何使用 Django模板标记制作条件语句?

from django import template
from django.contrib.auth.models import User, Group

register = template.Library()

@register.simple_tag
def is_designer(user_id):
    try:
        group = Group.objects.get(
            name = "Designer",
            user = user_id
        )
        return True
    except Group.DoesNotExist:
        return False

这在我的模板中显示为正确或错误:

{% is_designer user.id %}

然而,这些在if表达式结尾处给出了一个错误“未使用'user.id'。”:

  

{%if is_designer user.id == True%}是{%endif%}

     

{%if is_designer user.id%}是{%endif%}

2 个答案:

答案 0 :(得分:10)

如果您将其改为assignment tag,则可以执行类似

的操作
{% is_designer user.id as is_user_designer %}

{% if is_user_designer == True %} Yes {% endif %}

{% if is_user_designer %} Yes {% endif %}

注意:从Django 1.9开始,不推荐使用赋值标记,简单标记现在可以存储值。请参阅1.9文档https://docs.djangoproject.com/en/1.9/howto/custom-template-tags/#assignment-tags

中的弃用通知

答案 1 :(得分:1)

这个怎么样:

{% is_designer user.id as is_user_designer %}
{{ is_user_designer|yesno:"Yes," }}