【问题标题】:How to ignore the first item in a list in a FOR function?如何忽略 FOR 函数列表中的第一项?
【发布时间】:2014-10-01 18:01:03
【问题描述】:

我有以下 for 循环吐出列表中的所有照片:

{% if photos %}
{% for photo in photos %}
    {% thumbnail photo.photo "100x100" crop="center" as im %}
    <img src="{{ im.url }}" alt="User's photos" data-ajax="{% url 'photo_increase_view' pk=photo.id %}"/>
    {% endthumbnail %}
{% endfor %}
{% endif %}

如何编辑它以忽略列表中的第一个结果(即显示项目 2、3、4...等)

【问题讨论】:

  • 你想用 jinja 还是 django 做?两者的最佳方式不同。

标签: python django jinja2


【解决方案1】:

使用slice

替换

{% for photo in photos %}

通过

{% for photo in photos|slice:"1:" %}

那么,完整的代码

{% if photos %}
{% for photo in photos|slice:"1:" %}
    {% thumbnail photo.photo "100x100" crop="center" as im %}
    <img src="{{ im.url }}" alt="User's photos" data-ajax="{% url 'photo_increase_view' pk=photo.id %}"/>
    {% endthumbnail %}
{% endfor %}
{% endif %}

【讨论】:

  • 这导致Could not parse the remainder: '[1:]' from 'photos[1:]'
  • django 模板列表不是这样索引的,如果你想访问列表中的第一个对象,{{photos.0}} 不确定如何直接在模板中进行更复杂的切片。我个人会放弃视图中的第一张照片
  • 你可以试试for photo in photos|slice:"1:",如果它适合你,请回复。
【解决方案2】:

查看forloop.first using Django;例如:

{% if photos %}

    {% for photo in photos %}
        {% if not forloop.first %}
            {% thumbnail photo.photo "100x100" crop="center" as im %}
            <img src="{{ im.url }}" alt="User's photos" data-ajax="{% url 'photo_increase_view' pk=photo.id %}"/>
            {% endthumbnail %}
        {% endif %}
    {% endfor %}

{% endif %}

【讨论】:

    【解决方案3】:

    我想答案有点晚了。但一个解决方案是:

    {% for photo in photos[1:] %}
    .....
    {% endfor %}
    

    【讨论】:

    • 这是完美的使用 jinja2;解决方案slice:"1:" 仅适用于 Django。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 2011-03-11
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多