Django模板标签条件

JRE*_*EAM 6 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
Run Code Online (Sandbox Code Playgroud)

这在我的模板中显示为True或False是正确的:

{% is_designer user.id %}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Nge*_*tor 11

如果你把它变成了一个赋值标签,你可以做类似的事情

{% is_designer user.id as is_user_designer %}

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

{% if is_user_designer %} Yes {% endif %}
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢你的工作,但我选择了一个过滤器:`{%if user | is_maker%} YES {%endif%}` (4认同)