Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将基于类的视图变量转换为基于函数的视图?_Python_Django - Fatal编程技术网

Python 如何将基于类的视图变量转换为基于函数的视图?

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

在基于类的视图中,我可以选择“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 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的经验?我多次阅读文档,但仍然不知道为什么通知不会从未读中读取……。通知可以工作,但即使已经读取,也会保持未读状态