gpt4 book ai didi

python - 获取 View 中的当前分页页并手动设置页数

转载 作者:行者123 更新时间:2023-11-30 23:13:21 25 4
gpt4 key购买 nike

  1. 我需要在view.py中手动设置分页页数
  2. 我需要获取当前页数以便在函数中处理它。我接下来查看.py:

    class VideoListView(ListView):
    template_name = "video/list.html"
    context_object_name = 'videos'
    paginate_by = 12
    request = requests.get(settings.YOUTUBE_VIDEO_COUNT_URL)
    count = simplejson.loads(request.text)['data']['totalItems']

    def get_queryset(self, **kwargs):
    request = requests.get(settings.YOUTUBE_VIDEO_URL)
    data_about = simplejson.loads(request.text)
    video_list = []
    for item in data_about['data']['items']:
    video_list.append(item)
    return video_list

页面计数必须为:count/paginate_by,并且每个页面请求的 json 都会不同。

最佳答案

Django 分页通过 GET 存储,因此在您的 ListView 中您需要访问:

# This will assume, if no page selected, it is on the first page
actual_page = request.GET.get('page', 1)
if actual_page:
print actual_page

因此,在 ListView 代码中,取决于您需要它的位置,但如果您在 get_queryset 函数中需要它,则可以使用 访问请求 self :

class VideoListView(ListView):
# ..... your fields

def get_queryset(self, **kwargs):
# ... Your code ...
actual_page = self.request.GET.get('page', 1)
if actual_page:
print actual_page
# ... Your code ...

使用 Django Pagination 自定义分页对象:

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

def CreatePagination(request, obj_list):
# Create the pagination
RESULTS_PER_PAGE = 10
paginator = Paginator(obj_list, RESULTS_PER_PAGE)
page = request.GET.get('page') # Actual page
try:
page_list = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
page_list = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
page_list = paginator.page(paginator.num_pages)

return page_list

要使用此CreatePagination函数,您需要向其传递请求和对象列表。请求用于获取实际页面,对象列表用于生成分页。

此函数将返回一个分页,您可以在模板中管理该分页,就像管理从 ListView 中自动生成的分页一样

关于python - 获取 View 中的当前分页页并手动设置页数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29364167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com