在for循环django模板中添加列表限制

时间:2018-01-03 14:21:35

标签: python django python-3.x for-loop django-templates

我想在Django模板中只列出10个元素

这是我的代码

<ul>
    <h3>Positive Tweets :</h3>
    {% for tweet in positiveTweet %}
      <li>{{ tweet.0 }}</li>
    {% endfor %}
</ul>

如果positiveTweet列表的长度为100,则如何打印前10个元素。

4 个答案:

答案 0 :(得分:2)

Django的方法是在视图的结果集上构造一个Paginator,然后在模板中查看Page的属性,有关详细信息,请参见the Django pagination documentation

例如,如果我的新闻对象可用,例如:

def index(request):
    news = News.objects.filter(published=True).select_related('author').prefetch_related('tags')
    paginator = Paginator(news, 10)
    page_obj = paginator.page(request.GET.get('page', '1'))
    return render(request, 'front.html', {'news': page_obj})

在模板中,有一个Page对象,该对象一次可容纳10个项目,并且具有几个有用的属性,您可以将这些属性连接到UI寻呼机中。例如bootstrap pager is wired像这样:

{% for post in news %}
  <h3>{{ post.headline }}</h3>
  {{ post.body }}
{% endfor %}

<nav>
  <ul class="pagination">
    {% if news.has_previous %}
    <li>
      <a href="?page={{news.previous_page_number}}" aria-label="Previous">
        <span aria-hidden="true">&laquo;</span>
      </a>
    </li>
    {% endif %}
    {% for p in news.paginator.page_range %}
    <li class="{% if news.number == p %}active{% endif %}"><a href="?page={{p}}">{{p}}</a></li>
    {% endfor %}
    {% if news.has_next %}
    <li>
      <a href="?page={{news.next_page_number}}" aria-label="Next">
        <span aria-hidden="true">&raquo;</span>
      </a>
    </li>
    {% endif %}
  </ul>
</nav>

答案 1 :(得分:0)

您可以使用slice进行此操作:

<ul>
    <h3>Positive Tweets :</h3>
    {% for tweet in positiveTweet|slice:":10" %}
      <li>{{ tweet.0 }}</li>
    {% endfor %}
</ul>

请参阅Django Slice Docs

答案 2 :(得分:0)

同样,在第10次迭代后停止处理的循环:

{% for user in users %}
{%- if loop.index >= 10 %}{% break %}{% endif %}
{%- endfor %}

loop.index以1开头,loop.index0以0开头。

请访问以下链接了解详情:http://jinja.pocoo.org/docs/2.10/templates/#for-loop

答案 3 :(得分:0)

像这样检查循环计数器:

          {% for tweet in positiveTweet %}

               {% if forloop.counter < 11 %}

                <!-- Do your something here -->

               {% endif %}

          {% endfor %}