基于 Forloop 模式的图像大小

Posted

技术标签:

【中文标题】基于 Forloop 模式的图像大小【英文标题】:Image size based on Forloop pattern 【发布时间】:2014-10-29 10:07:01 【问题描述】:

我有一个图像循环。

想要的图案:

1   4  5   8  9      12  13      16
 2 3    6 7     10 11      14 15

根据 forloop 编号,我将有 2 种可能的图像尺寸,顶部的尺寸为 1,底部的尺寸为 2。

所以我开始使用 divisibleby:"x",但很快意识到这行不通,因为该模式并不总是允许 divisibleby,在某些情况下两者都可能是真的。

我可以手动执行此操作以检查号码是否在列表中,例如:

[2,3,6,7,14,15....]

但这真的很愚蠢。

有没有简单的方法可以做到这一点?

我最初的想法,根本不成立!

% for project in branding %
    % if forloop.counter == 1 or forloop.counter|divisibleby:"4" or forloop.counter|divisibleby:"5" %
        <div class="tile">
            <a href="/work/ project.slug /">
                <img src="% thumbnail project.tile_image "313x490" crop="center" as im % im.url % endthumbnail %">
            </a>
        </div>
    % endif %
    % if forloop.counter|divisibleby:"2" or forloop.counter|divisibleby:"3" %
        <div class="tile">
            <a href="/work/ project.slug /">
                <img src="% thumbnail project.tile_image "313x310" crop="center" as im % im.url % endthumbnail %">
            </a>
        </div>
    % endif %
% endfor %

【问题讨论】:

【参考方案1】:

对我来说,这看起来像是 cycle 内置模板标签的情况:

% for project in branding %
    <div class="tile">
      % cycle '313x490' '313x310' '313x310' '313x490' as size silent %
      <a href="/work/ project.slug /">
        <img src="% thumbnail project.tile_image size crop="center" as im % im.url % endthumbnail %">
      </a>
    </div>
% endfor %

但我不熟悉您使用的thumbnail 标签,所以那里可能有问题。

【讨论】:

这是一个非常好的解决方案,它运行完美,而且非常简单! 我看到了您提出的修改 - 现在添加的 silent 参数也将停止不需要的输出。【参考方案2】:

我相信您正在寻找数字 mod 4 为 2 或 3 的情况。

2 % 4 = 2
3 % 4 = 3
6 % 4 = 2
7 % 4 = 3
10 % 4 = 2
11 % 4 = 3

【讨论】:

以上是关于基于 Forloop 模式的图像大小的主要内容,如果未能解决你的问题,请参考以下文章

Django forloop 索引操作

如何在 django 模板中设置自定义 forloop 起点

HTML forloop - 双

django-模板变量forloop

模板中的 Django forloop

Django1.5 forloop.counter 不在模板中递增