我正在覆蓋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
如果您創建了一個過濾器,可以將正在數據庫中檢查的模型的名稱作爲參數 –