标签: django-pagination

Django分页

我需要进行真正的分页,而不是对所有已检索的数据进行分页.Django文档站点中的示例,如;

def listing(request):
    contact_list = Contacts.objects.all()
    paginator = Paginator(contact_list, 25) # Show 25 contacts per page

    page = request.GET.get('page')
    try:
        contacts = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        contacts = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        contacts = paginator.page(paginator.num_pages)

    return render_to_response('list.html', {"contacts": contacts})
Run Code Online (Sandbox Code Playgroud)

此代码在所有已检索记录上分页记录.但是有一个麻烦.如果记录太多,试图检索所有记录需要花费很多时间.我需要一个解决方案来从数据库中逐页检索记录.

在Django中有另一种解决方案吗?

python django mongodb django-pagination

8
推荐指数
1
解决办法
3525
查看次数

如何在 AJAX 调用上重新渲染 django 模板代码

我有一个视图将分页对象(在查询集上)发送到模板,我在模板中进一步将其呈现为表格。我想要做的是单击模板上分页栏上的页码,它应该进行 ajax 调用以获取该页码的分页输出并使用它动态更新表格的内容。

看法:

def accounts(request):
    #Including only necessary part
    accounts_list = Accounts.objects.all()
    paginator = Paginator(accounts_list, 25)
    page = request.GET.get('page')
    try:
        accounts = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        accounts = paginator.page(1)
    except EmptyPage:
        # If page is out of range, deliver last page of results.
        accounts = paginator.page(paginator.num_pages)

    context['accounts'] = accounts
    return render(request, template, context)
Run Code Online (Sandbox Code Playgroud)

模板将其加载为:

{% if accounts %}
<table id="acc">
    <tr>
        <th>Field 1</th>
        ...
        <th>Field N</th>
    </tr>
    {% for item …
Run Code Online (Sandbox Code Playgroud)

django ajax jquery django-pagination

6
推荐指数
1
解决办法
7794
查看次数

如何使用Django Paginator在页面上拆分DataFrame(pandas)?

这很容易Series。我只是将其传递给paginator。但是,当我使用时DataFrame,它被称为“系列的真值不明确”。也许count方法有问题,但我不知道该如何更改。在我的项目中,DataFrame必须按行在页面上拆分。

def listing(request):
    contact_list = pd.DataFrame(np.arange(12).reshape(4,3))
    paginator = Paginator(contact_list, 1)  # Show 1 row per page

page = request.GET.get('page')
try:
    contacts = paginator.page(page)
except PageNotAnInteger:
    # If page is not an integer, deliver first page.
    contacts = paginator.page(1)
except EmptyPage:
    # If page is out of range (e.g. 9999), deliver last page of results.
    contacts = paginator.page(paginator.num_pages)

return render(request, 'list.html', {'contacts': contacts})
Run Code Online (Sandbox Code Playgroud)

python django django-pagination pandas

6
推荐指数
1
解决办法
1390
查看次数

带分页的 Django 过滤器

我正在尝试按照以下教程使用 django 过滤器进行分页,但该教程似乎缺少某些内容,而且我无法使用基于函数的视图方法显示分页。

https://simpleisbetterthancomplex.com/tutorial/2016/08/03/how-to-paginate-with-django.html

My updated users_list.html is the following:

   {% extends 'base.html' %}

{% load widget_tweaks %}

{% block content %}
  <form method="get">
    <div class="well">
      <h4 style="margin-top: 0">Filter</h4>
      <div class="row">
        <div class="form-group col-sm-4 col-md-4">
          <label/> 3-4 User ID
          {% render_field filter.form.employeentname class="form-control" %}
        </div>
        <div class="form-group col-sm-4 col-md-4">
          <label/> First Name
          {% render_field filter.form.employeefirstname class="form-control" %}
        </div>
        <div class="form-group col-sm-4 col-md-4">
          <label/> Last Name
          {% render_field filter.form.employeelastname class="form-control" %}
        </div>

        <div class="form-group col-sm-4 col-md-4">
          <label/> Status
          {% render_field filter.form.statusid …
Run Code Online (Sandbox Code Playgroud)

django django-filter django-pagination

6
推荐指数
1
解决办法
9529
查看次数

对过滤器进行分页

我有一个过滤器,其中包含汽车品牌和型号的相关下拉列表。由于我不想在一页上显示所有内容,因此我添加了分页器。问题是过滤器工作正常,但无法在页面中保留

当过滤器处于活动状态时,网址看起来像

/cars/?manufacture=2&model=2 如果我转到下一页,我得到的只是/cars/?page=2

我想要类似的东西/cars/?manufacture=2&model=2?page=2

如果我打印{{ posts|length }}它确实会返回正在过滤的正确数量的项目,因此那里没有问题

我认为问题出在模板中的下一个和上一个按钮,因为它们不会传递下一页以外的任何参数。我如何将过滤器带入分页器。

看法

def allCarsView(request):

    model = Post
    
    myFilter = carFilter(request.GET, queryset=Post.objects.all())
    posts = myFilter.qs
    
    page = request.GET.get('page', 1)
    paginator = Paginator(posts.order_by('date_posted'), 2)
    page_obj = paginator.get_page(page)
    page_range = paginator.get_elided_page_range(number=page)
    
    context = {
        'posts':posts, 'myFilter':myFilter, 'page_range': page_range, 
        'page': page, 'paginator': paginator, 'page_obj': page_obj
    }
    return render(request, 'blog/cars.html', context)    
Run Code Online (Sandbox Code Playgroud)

html 分页器

<nav aria-label="Page navigation example " class="paginator">
<nav aria-label="Page navigation example " class="paginator">
    <ul class="pagination justify-content-center">
        <li class="page-item">
            {% if page_obj.has_previous …
Run Code Online (Sandbox Code Playgroud)

django django-filter django-pagination

6
推荐指数
1
解决办法
517
查看次数

在 Django 模板中分页时,如何正确显示与其父模型字段关联的所有内联字段?

我是一名学生,也是 Django 新手,我们有一个项目正在尝试使用 Django 构建。在构建该项目的过程中,我偶然发现了一个问题,并陷入困境数周。

\n

我想在分页时在一页上显示与其父字段关联的所有内联字段。当我尝试使用两个具有外键的附加模型对模型进行分页时,我的模板中得到了一个奇怪的结果。我似乎不知道如何解决它。我在网上尝试了多种方法,也阅读了很多论坛和讨论,但都没有效果,到目前为止都没有效果。以下是我的文件和一些图片:

\n
\n

(模型.py)

\n
from django.db import models\n\nclass History(models.Model):\n   BARANGAY = (\n     (\'Alegria\',\'Alegria\'),\n     (\'Bagacay\',\'Bagacay\'),\n     (\'Baluntay\',\'Baluntay\'),\n     (\'Datal Anggas\',\'Datal Anggas\'),\n     (\'Domolok\',\'Domolok\'),\n     (\'Kawas\',\'Kawas\'),\n     (\'Ladol\',\'Ladol\'),\n     (\'Maribulan\',\'Maribulan\'),\n     (\'Pag-Asa\',\'Pag-Asa\'),\n     (\'Paraiso\',\'Paraiso\'),\n     (\'Poblacion\',\'Poblacion\'),\n     (\'Spring\',\'Spring\'),\n     (\'Tokawal\',\'Tokawal\')\n   )\n  barangay_name = models.CharField(max_length=100,choices=BARANGAY,default=\'Alegria\')\n  barangay_img = models.ImageField(upload_to=\'history_imgs\',blank=True)\n  barangay_info = models.TextField()\n\nclass GeoHazard(models.Model):\n  history = models.ForeignKey(History,related_name=\'geohazards\',on_delete=models.CASCADE)\n  geohazard_img = models.ImageField(upload_to=\'history_imgs\',blank=True)\n  date_published = models.CharField(max_length=100, null=True)\n  geohazard_info = models.TextField()\n\nclass Assessment(models.Model):\n   RATINGS = (\n      (\'HIGH\',\'HIGH\'),\n      (\'HIGH (Mitigated)\',\'HIGH (Mitigated)\'),\n      (\'MODERATE\',\'MODERATE\'),\n      (\'MODERATE (Mitigated)\',\'MODERATE (Mitigated)\'),\n      (\'LOW\',\'LOW\'),\n      (\'UNKNOWN\',\'UNKNOWN\'),\n   )\n\n   history = models.ForeignKey(History,related_name=\'assessment\',on_delete=models.CASCADE)\n   purok_name = models.CharField(max_length=50)\n   purok_coordinates …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-pagination django-listview

6
推荐指数
1
解决办法
669
查看次数

Django分页(获取对象对应的页号)

我有一个分页,我试图从对象页面获取索引页面(反向分页)

get_pagination_posts 返回模型的分页器Post

class PostManager(models.Manager):
    def get_paginated_posts(self, request=None):
        if request and request.user.has_perm('blog.change_post'):
            posts = super(PostManager, self).filter(is_update=False)
        else:        
            posts = super(PostManager, self).filter(publish=True, is_update=False)
        return Paginator(posts, POSTS_PER_PAGE)
    .
    .
Run Code Online (Sandbox Code Playgroud)

这是我的模型

class Post(models.Model):
    .
    .
    .
    def get_page(self, request=None):
        paginator = Post.objects.get_paginated_posts(request)
        for i in range(1, paginator.num_pages+1):
            if self in paginator.page(i).object_list:                
                return i
            pass
        return False 
Run Code Online (Sandbox Code Playgroud)

我关心的是Post.objects.get_paginated_postsget_page 函数中的调用。从实例
调用类是否正确?Post还有其他更好的方法可以做到这一点吗?
为什么我不能打电话super(Post, self).objects.get_paginated_posts做同样的事情?
我知道这self.objects.get_paginated_posts不会起作用,因为对象无法访问其管理器。

解决了

Tomasz Elendt 建议的最终代码:

class PostManager(models.Manager):
    def get_paginated_posts(self, user=None):
        if …
Run Code Online (Sandbox Code Playgroud)

django django-models django-managers django-pagination

5
推荐指数
1
解决办法
2949
查看次数

在django中使用autopagination和格式化问题

我正在使用django-paginate并使用{%paginate%}标记获得奇怪的格式问题.我附上了问题的图像.

我只是想知道可能导致这种情况的原因是什么?

在下图中,我在第一页.请注意,1被截断,并且页面排序奇怪,前一个/下一个不可见.

在此输入图像描述

我的模板现在就是这样:

{% extends "base.html" %}
{% load mptt_tags %}
{% load pagination_tags %}
{% load i18n %}
{% block body %}
{% autopaginate parts 20 %}
{% paginate %}
Run Code Online (Sandbox Code Playgroud)

django django-pagination

5
推荐指数
1
解决办法
1070
查看次数

如何禁用 django 管理分页?

我需要关闭 django 管理分页。我在 django 中使用 mttp,并且需要在某些管理模块上禁用分页。

我怎样才能做到呢?
或者我怎样才能只由父母进行分页?

python django django-pagination python-2.7

5
推荐指数
1
解决办法
5148
查看次数

django 分页“该页面不包含结果”

我想使用 django 分页。第一页能够加载产品,但最后一页不显示它们。

\n\n

这是我的索引视图:

\n\n
def index(request):\n\n    categories = Category.objects.filter(parent_category=None)\n\n    product_list = Product.objects.filter(is_deleted=False).order_by(\'created_at\')\n    paginator = Paginator(product_list, 1) # Show 25 contacts per page\n    page = request.GET.get("page",1)\n\n    try:\n        products = paginator.page(page)\n    except PageNotAnInteger:\n        products = paginator.page(1)\n    except EmptyPage:\n        products = paginator.page(1)\n\n    context = {\n        \'products\': products,\n        \'categories\': categories\n    }\n    return render(request, \'product/urunler.html\', context)\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的模板:

\n\n
<div class="blog-pagination">\n    <ul class="flat-pagination style1">\n        {% if products.has_previous %}\n            <li class="prev">\n                <a href="?page={{products.previous_page_number}}" title="">\n                    <img src="{% static \'images/icons/left-1.png\' %}" alt="">\xc3\x96nceki Sayfa\n                </a>\n            </li>\n        {% …
Run Code Online (Sandbox Code Playgroud)

django django-models django-views django-pagination

5
推荐指数
1
解决办法
4750
查看次数