【问题标题】:Django Template Tag ConditionalDjango 模板标签条件
【发布时间】:2013-04-23 12:48:04
【问题描述】:

如何从 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

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

{% is_designer user.id %}

但是,这些给了我一个错误“在 if 表达式末尾未使用 'user.id'。”:

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

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

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    如果你把它变成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

    【讨论】:

    • 感谢这项工作,但我使用了过滤器:{% if user|is_maker %} YES {% endif %}
    【解决方案2】:

    这个怎么样:

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

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 2011-12-11
      • 2018-08-14
      • 2020-09-27
      • 2021-02-18
      • 1970-01-01
      • 2011-02-09
      • 2012-10-31
      • 2013-04-21
      相关资源
      最近更新 更多