如何使用引导程序和 for 循环在 django 中创建电影片段?

Posted

技术标签:

【中文标题】如何使用引导程序和 for 循环在 django 中创建电影片段?【英文标题】:How to create a film strip in django using bootstrap and for loop? 【发布时间】:2013-06-24 13:34:49 【问题描述】:

如何在我的模板中显示一组 6 个缩略图来创建幻灯片。我正在通过 for 循环迭代的列表有大约 30 个项目,我想将其分成 6 个块并将其显示为幻灯片滑块。我尝试在 for 循环中使用 range 函数,但这不起作用

<div class="carousel-inner">
        <div class="item active">
            <ul class="thumbnails">

              % for show in object_list %
                    <li class="span2">
                        <div class="thumbnail">
                             <a href=" show.get_absolute_url " data-title=" show.name " >
                                    % if show.images.exists %
                                        % with show.images.all.0.image as show_image %
                                            <img src="% thumbnail show_image 160x160 crop %"  class="thumbnail">
                                        % endwith %
                                    % else %
                                        <img src="% static 'img/default-image.gif' %"  class="thumbnail">
                                    % endif %
                                </a>


                        </div>
                    </li>
            %endfor%  
           </ul>
        </div>

【问题讨论】:

每 6 张图片一个轮播? 【参考方案1】:

如果您希望每 6 张图片有 1 个轮播,那么您可以这样做

步骤 1) 在您的模板文件夹中创建一个名为 film-slider.html 的新 .html 文件。

% for reel in reels %
<div class="carousel-inner">
    <div class="item active">
        <ul class="thumbnails">
            % for show in reel %
            <li class="span2">
                <div class="thumbnail">
                     <a href=" show.get_absolute_url " data-title=" show.name " >
                        % if show.images.exists %
                            % with show.images.all.0.image as show_image %
                                <img src="% thumbnail show_image 160x160 crop %"  class="thumbnail">
                            % endwith %
                        % else %
                            <img src="% static 'img/default-image.gif' %"  class="thumbnail">
                        % endif %
                    </a>
                </div>
            </li>
            % endfor %  
       </ul>
    </div>
</div>
% endfor %

第 2 步) 在你的 templatetags/tags.py 中(如果你还没有创建它)

from django import template

register = template.Library()

def filmslider(reel):
    reels = []
    for i in range(0, len(reel), 6):
        reels.append(reel[i:i+6])
    return 'reels':reels

register.inclusion_tag('film-slider.html')(filmslider)

这将在您通过% load tags % 加载模板后生成包含标签。

这将使这项工作像 % filmslider object_list % 一样为您工作,您将替换 发布的所有上述 html 代码。

我还没有测试过,但它应该可以工作,如果将来你想为这个标签提供更多功能,你可以简单地在标签定义中添加参数,我会举个例子.

def filmslider(reel, slides):
    #do the code.

这将引导您到 % filmslider object_list 9 % 瞧,现在您可以将电影卷轴从 6 张幻灯片扩展到 9 张。

希望这会有所帮助!

【讨论】:

非常感谢,这太棒了。另外,我是 Django 新手,您能告诉我应该在哪里创建我的 tempatetags 目录吗? 在您的应用模块中创建一个名为 templatetags 的文件夹,并确保其中包含 init.py。它在文档中,google templatetags Django 和它的第一个结果! :) 绝对是我想要的,这也将对我未来的前端演示有所帮助。非常感谢! 我现在收到一个错误 - TemplateSyntaxError at / 'tagswoko' is not a valid tag library: Template library tagswoko not found, try 你把你的文件命名为 tagswoko 了吗?

以上是关于如何使用引导程序和 for 循环在 django 中创建电影片段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 模板语言中正确构建 for 循环

如何在Django模板的内部for循环中使用外部for循环值

使用卡片和 for 循环引导

如何在r中的循环中引导加权平均值

如何在 Django 模板中使用这个 for 循环? [关闭]

如何使用 DJango 在 for 循环中使用变量