我有一些代码可以从数据存储中提取项目列表。
它们看起来像这样:
class List(db.Model):
name = db.StringProperty(multiline=True)
class Item(db.Model):
name = db.StringProperty(multiline=True)
created = db.DateTimeProperty(auto_now_add=True)
completed = db.DateTimeProperty(auto_now_add=False)
在 Django 模板中,我希望仅在至少有一个列表元素要显示时有条件地显示表头。我很惊讶这是多么困难。
例如:
{% for list in lists %}
<font size="+2"><b>{{ list.name }}</b></font><br>
<table><tr><th> </th><th>item</th><th>created</th><th>completed</th></tr>
{% for item in list.items %}
{% ifnotequal item.completed None %}
<tr><td> </td><td>{{ item.name }} </td><td>{{ item.created }} </td><td>{{ item.completed }} </td></tr>
{% endifnotequal %}
{% endfor %}
</table>
{%endfor%}
如果列表中没有任何符合条件的项目,我会得到一张丑陋的空表,如下所示:
**todo**
item completed delete
我想做类似的事情,在 Django 中设置一个变量,比如
{% set first = 1 %}
然后当我要为表格输出至少一项时,执行类似的操作
{% for item in list.items %}
{% ifnotequal item.completed None %}
{% if first %}
<table><tr><th> </th><th>item</th><th>created</th><th>completed</th></tr>
{% set first = 0 %}
{% endif %}
.... do the rest of the stuff
{% endifnotequal %}
因此,我尝试为 Django 创建一个自定义标签,该标签将在 appengine 中很好地发挥作用,如下所述:
并遇到了很多错误,甚至尝试了这些页面上的建议:
没有得到任何地方。我正在使用 Python 2.7。这不应该这么难。