我需要进行真正的分页,而不是对所有已检索的数据进行分页.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中有另一种解决方案吗?
我有一个视图将分页对象(在查询集上)发送到模板,我在模板中进一步将其呈现为表格。我想要做的是单击模板上分页栏上的页码,它应该进行 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) 这很容易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) 我正在尝试按照以下教程使用 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) 我有一个过滤器,其中包含汽车品牌和型号的相关下拉列表。由于我不想在一页上显示所有内容,因此我添加了分页器。问题是过滤器工作正常,但无法在页面中保留
当过滤器处于活动状态时,网址看起来像
/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 构建。在构建该项目的过程中,我偶然发现了一个问题,并陷入困境数周。
\n我想在分页时在一页上显示与其父字段关联的所有内联字段。当我尝试使用两个具有外键的附加模型对模型进行分页时,我的模板中得到了一个奇怪的结果。我似乎不知道如何解决它。我在网上尝试了多种方法,也阅读了很多论坛和讨论,但都没有效果,到目前为止都没有效果。以下是我的文件和一些图片:
\n(模型.py)
\nfrom 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) 我有一个分页,我试图从对象页面获取索引页面(反向分页)
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-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 中使用 mttp,并且需要在某些管理模块上禁用分页。
我怎样才能做到呢?
或者我怎样才能只由父母进行分页?
我想使用 django 分页。第一页能够加载产品,但最后一页不显示它们。
\n\n这是我的索引视图:
\n\ndef 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)\nRun 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)