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 循环中使用条件标签