Tim*_*imB 3 django django-views
Django文档展示了如何通过捕获EmptyPage异常使用基于函数的视图返回分页查询集的最后一页。
例如,使用基于类的通用视图实现相同目标的最简单方法是什么ListView?
我首先认为allow_emptyfor的设置MultipleObjectMixin可以满足我的需要,但检查代码表明,如果查询集中的对象为零,而不是请求的页面上的对象为零,它只会防止 404 错误。
两个选项似乎是:
ListView和覆盖paginate_queryset(继承自MultipleObjectMixin),或Paginator和 override validate_number,并paginator_class在视图中设置为子类。有没有更好的方法来实现这一目标?
下面是选项 2 的样子:
from django.core.paginator import EmptyPage, Paginator
from django.views.generic import ListView
class SafePaginator(Paginator):
def validate_number(self, number):
try:
return super(SafePaginator, self).validate_number(number)
except EmptyPage:
if number > 1:
return self.num_pages
else:
raise
class MyView(ListView):
paginator_class = SafePaginator
paginate_by = 25
[...]
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎是目前最好的选择。
| 归档时间: |
|
| 查看次数: |
987 次 |
| 最近记录: |