Django 模板标签条件

Posted

技术标签:

【中文标题】Django 模板标签条件【英文标题】:Django Template Tag Conditional 【发布时间】: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 %

【问题讨论】:

【参考方案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," 

【讨论】:

以上是关于Django 模板标签条件的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Django 模板文件的 for 循环中使用条件标签

python Django教程 之模板渲染循环条件判断常用的标签过滤器

Django中级篇之模板语言

08 Django 模板进阶

Django模板进阶007

Django内置模板标签