1

テンプレートに 6 つのサムネイルのグループを表示してフィルムストリップを作成するにはどうすればよいですか。for ループを反復処理しているリストには、約 30 個の項目があり、6 個のチャンクに分割してフィルムストリップ スライダーとして表示したいと考えています。for ループに範囲関数を使用しようとしましたが、うまくいきません

<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 に答える