Django 模板自定义标签为布尔值

Posted

技术标签:

【中文标题】Django 模板自定义标签为布尔值【英文标题】:Django template custom tag as boolean 【发布时间】:2015-03-03 06:34:36 【问题描述】:

这似乎是一件很简单的事情,但我似乎无法让它为一个人工作,而且我似乎无法在网上得到一个直接的答案,无论它是否可以完成。

我只想要一个可以像这样工作的简单标签

% if my_tag %
 render something
% else %
 render something else
% endif %

现在我不关心过滤器或任何其他你可能能够做同样事情的方式,我希望它看起来完全一样,并且像描述的那样工作,我有一个简单的标签,实际上确实返回 True或 False 根据需要,如果我这样调用标签就会调用它

% my_tag %

但是,如果我在标签前添加 if,它不会被调用,是不是没有实现这么简单和合乎逻辑的功能?

【问题讨论】:

how to use custom django templatetag with django template if statement? 的可能重复项 这不是可能的重复它很可能是重复的,我再次问的原因是因为答案并没有真正回答关于天气的问题,或者实际上不可能做到,有如果给出的答案只是作者解决问题的方式,或者 django 无法拥有如此简单的工作流程,则没有真正的澄清 你见过这个吗? gist.github.com/xtranophilist/6637377 【参考方案1】:

就像指向潜在重复状态的链接一样,您可以使用类似于以下的assignment tag 来返回当前时间:

@register.assignment_tag
def get_current_time(format_string):
    return datetime.datetime.now().strftime(format_string)

然后你可以在你的模板中做你想做的事:

% if get_current_time %
 ...show time
% else %
 ...don't show time
% endif %

【讨论】:

以上是关于Django 模板自定义标签为布尔值的主要内容,如果未能解决你的问题,请参考以下文章

django自定义模板标签和过滤器

在自定义模板标签中解析 Django 自定义模板标签

django自定义过滤器及模板标签

Django之博客系统:自定义模板标签

Jinja - 加载自定义模板标签集

django头像自定义模板标签