149
A
回答
281
我想你會詢問有關使用基於新類的視圖分頁的信息,因爲使用基於傳統函數的視圖很容易找到。我發現只需設置paginate_by
變量就足以激活分頁。請參閱Class-based generic views。
例如,在你的views.py
:
import models
from django.views.generic import ListView
class CarListView(ListView):
model = models.Car # shorthand for setting queryset = models.Car.objects.all()
template_name = 'app/car_list.html' # optional (the default is app_name/modelNameInLowerCase_list.html; which will look into your templates folder for that path and file)
context_object_name = "car_list" #default is object_list as well as model's_verbose_name_list and/or model's_verbose_name_plural_list, if defined in the model's inner Meta class
paginate_by = 10 #and that's it !!
在模板(car_list.html
),您可以包括這樣的分頁部分(我們有一些可用的上下文變量:is_paginated
,page_obj
和paginator
)。
{# .... **Normal content list, maybe a table** .... #}
{% if car_list %}
<table id="cars">
{% for car in car_list %}
<tr>
<td>{{ car.model }}</td>
<td>{{ car.year }}</td>
<td><a href="/car/{{ car.id }}/" class="see_detail">detail</a></td>
</tr>
{% endfor %}
</table>
{# .... **Now the pagination section** .... #}
{% if is_paginated %}
<div class="pagination">
<span class="page-links">
{% if page_obj.has_previous %}
<a href="/cars?page={{ page_obj.previous_page_number }}">previous</a>
{% endif %}
<span class="page-current">
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
</span>
{% if page_obj.has_next %}
<a href="/cars?page={{ page_obj.next_page_number }}">next</a>
{% endif %}
</span>
</div>
{% endif %}
{% else %}
<h3>My Cars</h3>
<p>No cars found!!! :(</p>
{% endif %}
{# .... **More content, footer, etc.** .... #}
要顯示的頁面是由GET參數指示的,簡單地增加?page=n
,到URL。
27
假設,我在app/models.py一類名爲FileExam(models.Model)
:
應用程序/ models.py
class FileExam(models.Model):
myfile = models.FileField(upload_to='documents/%Y/%m/%d')
date = models.DateTimeField(auto_now_add=True, blank=True)
teacher_name = models.CharField(max_length=30)
status = models.BooleanField(blank=True, default=False)
應用程序/ views.py
from app.models import FileExam
from django.core.paginator import Paginator
from django.core.paginator import EmptyPage
from django.core.paginator import PageNotAnInteger
class FileExamListView(ListView):
model = FileExam
template_name = "app/exam_list.html"
paginate_by = 10
def get_context_data(self, **kwargs):
context = super(SoalListView, self).get_context_data(**kwargs)
list_exam = FileExam.objects.all()
paginator = Paginator(list_exam, self.paginate_by)
page = self.request.GET.get('page')
try:
file_exams = paginator.page(page)
except PageNotAnInteger:
file_exams = paginator.page(1)
except EmptyPage:
file_exams = paginator.page(paginator.num_pages)
context['list_exams'] = file_exams
return context
在get_context_data
只有一點變化,並添加了django的分頁代碼文檔here
應用/模板/應用/ exam_list.html
正常的內容列表
PAGINATE部分
{% if is_paginated %}
<ul class="pagination">
{% if page_obj.has_previous %}
<li>
<span><a href="?page={{ page_obj.previous_page_number }}">Previous</a></span>
</li>
{% endif %}
<li class="">
<span>Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.</span>
</li>
{% if page_obj.has_next %}
<li>
<span><a href="?page={{ page_obj.next_page_number }}">Next</a></span>
</li>
{% endif %}
</ul>
{% else %}
<h3>Your File Exam</h3>
<p>File not yet available</p>
{% endif %}
app/urls.py
urlpatterns = [
url(
r'^$', views.FileExamListView.as_view(), name='file-exam-view'),
),
... ]
+0
這看起來不正確:'context = super(SoalListView,self)...'。你的意思是:'context = super(FileExamListView,self)...'? – cezar 2017-09-27 10:26:11
相關問題
- 1. 使用帶分頁的泛型ListView。 Django的
- 2. 泛型:基於通用類
- 3. 基於泛型的類
- 4. 使用泛型進行類型轉換
- 5. 如何使用泛型類型的泛型列表泛型類
- 6. Django基於類的泛型視圖和模型表
- 7. 如何將django的泛型CreateView與初始數據進行分類?
- 8. 如何使用泛型進行類型安全?
- 9. 如何在Django-Rest-Framework中使用泛型進行PUT(部分更新)?
- 10. Django的:在基於類的ListView
- 11. Django的 - 基於類型
- 12. Withou使用動態關鍵字,我們可以基於泛型類型參數進行類型轉型嗎?
- 13. 基於泛型參數的java泛型類型推斷
- 14. 從基類型的行動泛型
- 15. Django Rest Framework 3.2.3分頁不適用於泛型.ListCreateAPIView
- 16. 如何從類型變量中獲取ClassLoader(用於使用泛型來分類)
- 17. 使用Spring注入基於泛型類的類對象
- 18. Django泛型基於類的視圖示例:** kwargs來自哪裏?
- 19. 基於Django類的泛型視圖:無法導入名稱TemplateView
- 20. 如何分組泛型類?
- 21. 如何在使用泛型的基類上使用foreach?
- 22. 基於類的視圖被Django社區廣泛使用嗎?
- 23. 如何基於Java中的類參數實例化泛型類
- 24. 如何基於django urlpatterns中的HTTP方法進行區分
- 25. 如何從基類泛型派生泛型類?
- 26. 解決基於泛型的抽象類
- 27. 如何對基於Type對象的函數進行泛型調用?
- 28. 如何在基於類的通用視圖中使用分頁?
- 29. CLR泛型方法根據泛型參數的類型進行分支
- 30. Django使用get_absolute_url方法進行分頁
那好吧,但你怎麼綁模板也看到「car_list」對象? – gath 2011-05-06 11:21:35
我添加了一個模板示例 – ervin 2011-05-06 13:09:09
僅供參考,您也可以直接在urls.py:url(r'^cars/$',ListView中執行此操作。as_view( model = Car, paginate_by = 10 )), – shawnwall 2011-08-08 02:42:34