1

如何在我的模板中显示一组 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 %}" alt="{{show.name}}" class="thumbnail">
                                        {% endwith %}
                                    {% else %}
                                        <img src="{% static 'img/default-image.gif' %}" alt="{{show.name}}" class="thumbnail">
                                    {% endif %}
                                </a>


                        </div>
                    </li>
            {%endfor%}  
           </ul>
        </div>
4

1 回答 1

1

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

步骤 1)在模板文件夹中创建一个新的 .html 文件,名为film-slider.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 %}" alt="{{ show.name }}" class="thumbnail">
                            {% endwith %}
                        {% else %}
                            <img src="{% static 'img/default-image.gif' %}" alt="{{ show.name }}" 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 张。

希望这个对你有帮助!

于 2013-06-27T07:27:34.723 回答