我只想从 Django 模板的列表中打印 10 个元素

这是我的代码

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

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

最佳答案

Django 的方法是在 View 中的结果集上构造一个分页器,然后查看模板中页面的属性,请参阅 the Django pagination documentation 以获取完整详细信息。

例如,如果我的 News 对象像这样可用:

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>

关于python - 在for循环django模板中为列表添加限制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48079216/

10-16 22:47