要检查的GAE模板代码是列表中的项目

时间:2009-12-24 23:11:14

标签: python google-app-engine templates

如何使用“in”语句来检查列表中的项目与否。如果我使用:

{% for picture in pictures %}
   {% if picture in article.pictures %}
      <input type="checkbox" checked="true" name="picture" value="{{ picture.key }}"  />
   {% else %}
      <input type="checkbox" name="picture" value="{{ picture.key }}"  />
   {% endif %}
      <img src='/img?img_id={{ picture.key }}'></img> <br />
{% endfor %}

这是失败的:

TemplateSyntaxError: 'if' statement improperly formatted

在线

{% if picture in article.pictures %}

帮助?

2 个答案:

答案 0 :(得分:2)

默认情况下,Django模板不支持完整的条件表达式。您可以使用if检查一个值是否为“true”,或者您可以检查两个值是否等于ifequal等。

也许您可以在渲染模板之前在视图中装饰picture

for picture in pictures:
    picture.is_in_article = (picture in article.pictures)

然后在模板中,您可以对该新属性的值进行操作。

{% for picture in pictures %}
    {% if picture.is_in_article %}
        <input type="checkbox" checked="true" name="picture" value="{{ picture.key }}"  />
    {% else %}
        <input type="checkbox" name="picture" value="{{ picture.key }}"  />
    {% endif %}
    <img src='/img?img_id={{ picture.key }}'></img> <br />
{% endfor %}

答案 1 :(得分:1)

我没有使用GAE,但可以在补丁here中找到自定义“ifin”Django标记的代码。正如我的评论中所提到的,看起来这个功能可以在Django 1.2中实现