假設我有100
電影。藉助for循環。我們可以打印所有的電影。如下所示。Django模板循環(打印限制數據使用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 %}
View
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))
UPDATE2:香港專業教育學院的書面按照view
功能。這是唯一的問題,如果用戶點擊下一頁(paginator),它顯示以前的數據。意味着這些數據不會改變。任何建議?
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
理想的情況下,這應該在視圖中完成,而不是模板。模板不應該包含複雜的邏輯 - 對此的最佳和最「pythonic」解決方案是創建要在視圖中打印的電影列表,並將其傳遞到模板,而不是整個電影列表。 – Ben