Python 如何将基于类的视图变量转换为基于函数的视图?
在基于类的视图中,我可以选择“paginate_by=8”,在html中我可以这样做Python 如何将基于类的视图变量转换为基于函数的视图?,python,django,Python,Django,在基于类的视图中,我可以选择“paginate_by=8”,在html中我可以这样做 {%if page_obj.has_previous%} {%endif%} 但是对于基于函数的视图,有什么我可以做的,比如paginate_,这样我就不必修改html了吗 是的,您可以自己实施,如: from app.models import SomeModel from django.core.paginator import Paginator from django.http import Http
{%if page_obj.has_previous%}
{%endif%}
但是对于基于函数的视图,有什么我可以做的,比如paginate_,这样我就不必修改html了吗 是的,您可以自己实施,如:
from app.models import SomeModel
from django.core.paginator import Paginator
from django.http import Http404
from django.shortcuts import render
def some_view(request):
paginate_by = 8
qs = SomeModel.objects.all()
page = request.GET.get('page') or 1
try:
page = int(page)
except ValueError:
raise Http404('Invalid page number')
paginator = Paginator(qs, paginate_by)
try:
page = paginator.page(page)
except InvalidPage as e:
raise Http404('Invalid page number')
return render(
request,
'some_template.html',
{'page_obj': page, 'object_list': page.object_list}
)
从app.models导入SomeModel
从django.core.paginator导入paginator
从django.http导入Http404
从django.shortcuts导入渲染
定义某些视图(请求):
分页方式=8
qs=SomeModel.objects.all()
page=request.GET.GET('page')或1
尝试:
page=int(第页)
除值错误外:
引发Http404('无效页码')
分页器=分页器(qs,分页器)
尝试:
第页=分页器。第页(第页)
除残疾年龄外,如e:
引发Http404('无效页码')
返回渲染(
要求
“some_template.html”,
{'page_obj':page'object_list':page.object_list}
)
因此,我们在这里使用一个对象对queryset进行分页
这或多或少就是
MultipleObjectMixin
对结果分页的作用。但上述事实已经在某种程度上表明,对于此类视图,您最好使用基于类的视图,这样您就可以删除样板代码。不确定您是否能够访问,但您是否有使用django notification hq的经验?我多次阅读文档,但仍然不知道为什么通知不会从未读中读取……。通知可以工作,但即使已经读取,也会保持未读状态