假设我有 100
部电影。在for循环的帮助下。我们可以打印所有电影。就像下面这样。
在 Django 模板中
{% for movie in movies.object_list %}
{% endfor %}
但是如果我只需要打印 1
25
50
75
100 我该怎么办
列表中的电影?谢谢
更新:我已经写了这个。还有其他选择吗?
{% for movie in movies.object_list %}
{% if forloop.counter == 25 %}
{{ movie }}
{% endif %}
{% if forloop.counter == 50 %}
{{ movie }}
{% endif %}
{% if forloop.counter == 75 %}
{{ movie }}
{% endif %}
{% if forloop.counter == 100 %}
{{ movie }}
{% endif %}
{% endfor %}
查看
def movie_sort(request):
categories = Category.objects.all()
language_name = Category.objects.get(id=request.GET.get('language'))
movie_l = Movie.objects.filter(language=request.GET.get('language'),is_active=True)
# Displaying first row
for i, v in enumerate(movie_l):
if i == 0:
first_row_f = v
if i == 24:
first_row_l = v
if i == 25:
second_row_f = v
if i == 49:
second_row_l = v
if i == 50:
third_row_f = v
if i == 74:
third_row_l = v
if i == 75:
fourth_row_f = v
if i == 99:
fourth_row_l = v
################
paginator = Paginator(movie_l, 100) # Show 25 contacts per page
page = request.GET.get('page',1)
try:
movies = paginator.page(page)
except PageNotAnInteger:
movies = paginator.page(1)
except EmptyPage:
movies = paginator.page(paginator.num_pages)
return render_to_response('movie/alphabetic_list.html',locals(),
context_instance=RequestContext(request))
更新2:我在 View
中编写了以下函数。唯一的问题是,如果用户单击下一页(分页器),它会显示以前的数据。意味着这个数据不会改变。有什么建议吗?
for i, v in enumerate(movie):
if i == 0:
first_row_f = v
if i == 24:
first_row_l = v
if i == 25:
second_row_f = v
if i == 49:
second_row_l = v
if i == 50:
third_row_f = v
if i == 74:
third_row_l = v
if i == 75:
fourth_row_f = v
if i == 99:
fourth_row_l = v
最佳答案
如果您只是想要每 25 个项目,@Gautam K 就很接近:
{% for movie in movies.object_list|slice:"::25" %}
{{ movie }}
{% endfor %}
上述解决方案包括切片后缺少的冒号,并且适用于任何大小的列表(Gautam 的解决方案仅适用于 100 项列表)。
关于Django模板for循环(使用for循环打印有限数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8373964/