我正在覆盖Django中admintemplate的index.html。 我想在侧边栏上添加一个额外的字段,只有在接口为真时才会显示该字段。Django templatetag return True或False
这里为m的index.html的重要组成部分:
{% block sidebar %}
<div id="content-related">
{% if action_needed %}
<div class="my-module">
<h2>Foobar</h2>
<p>Display this over the sidebar</p>
</div>
{% endif %}
... Sidebarstuff...
{% endblock %}
这里是我的templatetag:
@register.simple_tag
def action_needed():
if some_conditon:
return True
else:
return False
的问题是,是,我的模块显示所有的时间。 在另一个线程中,我读到有关使用过滤器而不是模板标签,但Django文档说,至少需要1个参数用于过滤器。但我只是想要一个真/假的回报。
这样做的最好方法是什么?
编辑: 这里有更多的代码,以显示你究竟是什么即时通讯做: 我有具有DateTimeField字段到期日期来存储,如果帐户过期模型帐户。
exp = Account.objects.filter(expiration_date__lte = timezone.now())
if len(exp) == 0:
return False
else:
return True
EDIT2: 我解决了这个问题,但我不知道,如果它是一个非常优雅的方式。因为我没有足够的reputition回答我的问题,我需要在这里分享我的解决方案:
我把HTML的代码,如果templatetag内我的模块并返回,如果条件为真:
@register.simple_tag
def action_needed():
if some_conditon:
return '<div class="my-module"><h2>Foobar</h2><p>Display this over the sidebar</p></div>'
else:
return ''
在模板现在我只需要调用
{% action_needed %}
什么是'some_condition'?它依赖于什么? –
这取决于没有。只需检查我的数据库中是否有模型的对象 – 0xAffe
如果您创建了一个过滤器,可以将正在数据库中检查的模型的名称作为参数 –