效果:



url.py

main-urls

from django.urls import path,include

urlpatterns = [
path('admin/', admin.site.urls),
path('book/',include('book.urls'))
]

app-> book.urls

from django.urls import path
from . import views app_name = 'book' urlpatterns = [
path('add/',views.add_article,name='add_article'),
path('list/',views.ArticleListView.as_view(),name='article_list')
]

模型的创建

from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
create_time = models.DateTimeField(auto_now_add=True)

添加数据:

def add_article(request):
articles = []
for x in range(100):
article = Article(title='标题 %s'%x,content = "内容 %s"%x)
articles.append(article)
Article.objects.bulk_create(articles) #一次性插入。传递一个列表
return HttpResponse('添加成功')

context:

    def get_context_data(self, **kwargs):
context = super(ArticleListView, self).get_context_data(**kwargs)
print(context)
#context['xxx'] = 'xxx' #添加额外的键值对,传到模板中
return context {'paginator': <django.core.paginator.Paginator object at 0x0415D310>, 'page_obj': <Page 3 of 10>, 'is_paginated': True, 'object_list': <QuerySet [<Article: Article
object (21)>, <Article: Article object (22)>, <Article: Article object (23)>, <Article: Article object (24)>, <Article: Article object (25)>, <Article: Article obje
ct (26)>, <Article: Article object (27)>, <Article: Article object (28)>, <Article: Article object (29)>, <Article: Article object (30)>]>, 'articles': <QuerySet [<
Article: Article object (21)>, <Article: Article object (22)>, <Article: Article object (23)>, <Article: Article object (24)>, <Article: Article object (25)>, <Arti
cle: Article object (26)>, <Article: Article object (27)>, <Article: Article object (28)>, <Article: Article object (29)>, <Article: Article object (30)>]>, 'view':
<book.views.ArticleListView object at 0x0407BCB0>} 字段说明:
"""
paginator: 分页
page_obj:当前这一页参数
is_paginated: True
object_list: 对象名字
view:视图名字
""" """
Paginator常用属性和方法:
count:总共有多少条数据。
num_pages:总共有多少页。
page_range:页面的区间。比如有三页,那么就range(1,4)。
Page常用属性和方法:
has_next:是否还有下一页。
has_previous:是否还有上一页。
next_page_number:下一页的页码。
previous_page_number:上一页的页码。
number:当前页。
start_index:当前这一页的第一条数据的索引值。
end_index:当前这一页的最后一条数据的索引值。
""" # def get_queryset(self):
#例如用户数据的过滤。例如在生产环境中,对删除帖子而实际上还存在表中的数据过滤掉
# return Article.objects.all() #默认返回全部
# return Article.objects.filter(id__lte=9)

模板中上一页:

<nav aria-label="Page navigation">
<ul>
{% for article in articles %}
<li>
{{article.title}}
</li>
{% endfor %}
</ul>
<ul class="pagination">
<!--#上一页-->
<!--当有上一页时-->
{% if page_obj.has_previous %}
<li><a href="{% url 'book:article_list' %}?page={{ page_obj.previous_page_number }}">上一页</a></li>
{% else %}
<li class="disabled"><a href="#">上一页</a></li>
{% endif %} <!--中间的页码,如果是当前页,添加active属性--> {% for page in paginator.page_range %}
{% if page == page_obj.number %}
<li class="active">
<a href="{% url 'book:article_list' %}?page={{ page }}">{{ page }}</a>
</li>
{% else %}
<li><a href="{% url 'book:article_list' %}?page={{ page }}">{{ page }}</a></li>
{% endif %}
{% endfor %} <!--#下一页-->
{% if page_obj.has_next %}
<li><a href="{% url 'book:article_list' %}?page={{ page_obj.next_page_number }}">下一页</a></li>
{% else %}
<li class="disabled"><a href="x">下一页</a></li>
{% endif %}
</ul>
</nav>

Django ListView实现分页的更多相关文章

  1. Android中使用ListView实现分页刷新(线程休眠模拟)

    当要显示的数据过多时,为了更好的提升用户感知,在很多APP中都会使用分页刷新显示,比如浏览新闻,向下滑动到当前ListView的最后一条信息(item)时,会提示刷新加载,然后加载更新后的内容.此过程 ...

  2. Android中使用ListView实现分页刷新(线程休眠模拟)(滑动加载列表)

    当要显示的数据过多时,为了更好的提升用户感知,在很多APP中都会使用分页刷新显示,比如浏览新闻,向下滑动到当前ListView的最后一条信息(item)时,会提示刷新加载,然后加载更新后的内容.此过程 ...

  3. Android基本控件之listView(三)<用ListView实现分页加载>

    我们之前讨论了ListView的基本使用方法和ListView的优化 今天我们再来讨论一个关于ListView的一个新的东西~就是分页加载.那么什么是分页加载呢?简单点说,就是"下拉刷新&q ...

  4. android UI进阶之实现listview的分页加载

    上篇博文和大家分享了下拉刷新,这是一个用户体验非常好的操作方式.新浪微薄就是使用这种方式的典型. 还有个问题,当用户从网络上读取微薄的时候,如果一 下子全部加载用户未读的微薄这将耗费比较长的时间,造成 ...

  5. django之快速分页

    本文介绍djanog两种分页,第一是普通分页,第二是使用haystack全文检索的分页. 1.django自带分页功能,这个功能非常好用.基本知识点:Django提供了数据分页的类,这些类被定义在dj ...

  6. Django内置分页

    一.django内置分页 from django.shortcuts import render from django.core.paginator import Paginator, EmptyP ...

  7. Django中的分页,cookies与session

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  8. ListView实现分页加载(一)制作Demo

    一.什么是分页加载 在下面的文章中,我们来讲解LitView分页加载的实现.什么是分页加载呢?我们先看几张效果图吧,如下:                                       ...

  9. django: django rest framework 分页

    django: django rest framework 分页 2018年06月22日 13:41:43 linux_player_c 阅读数:665更多 所属专栏: django 实战   版权声 ...

随机推荐

  1. Sublime text 2/3 [Decode error - output not utf-8] 完美解决方法

    原文链接 http://blog.csdn.net/bbdxf/article/details/25594703 [Decode error - output not utf-8]或者[Decode  ...

  2. Mac更改PHP默认目录

    在Mac上搭建了PHP服务器以后,默认的路径为/Library/WebServer/Documents下面,但这让人很不爽,我想修改到自己定义的路径下.经过好一番折腾,终于成功了. PHPEclips ...

  3. JS中的instanceof和typeof,以及特殊引用类型

    1.instanceof是用于测试对象类型,通常格式为:a instanceof b,返回true或falise,表示为对象a是否是类型b的实例. typeof则是用于测试基本类型,包括undefin ...

  4. windows kafka 环境搭建踩坑记

    版本介绍(64位): Windows 10 JDK1.8.0_171 zookeeper-3.4.8/ kafka_2.11-0.10.0.1.tgz 点击链接进行下载 1. JDK安装和环境搭建 自 ...

  5. Python Day 8

    阅读目录:   内容回顾 三种字符串 文件操作三步骤 基础的读 基础的写 with...open()语法 文件的操作模式 文件的操作编码问题 文件的复制 游标操作 ##内容回顾 类型转换 #1.数字类 ...

  6. du

    du -ah --max-depth=1     这个是我想要的结果  a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度.

  7. selenium之复选框操作

    HTML源码: <!DOCTYPE html> <div lang="en"></div></div> <head> & ...

  8. Win7 VS2017编译magnum及例子

    magnum是一个开源的图形中间件 Lightweight and modular C++11/C++14 graphics middleware for games and data visuali ...

  9. Win7 VS2017 NASM编译FFMPEG(2018.12.22)

    今天无意中在gayhub发现个牛逼工程,全VS工程编译FFMPEG库,包括依赖库全是VS生成的,无需Mingw等Linux环境. 简单记录下过程,以防将来重装系统等情况,备忘. https://git ...

  10. Anfora 自动装载类

    1.目录结构 + Anfora | + Autoload | - ClassLoader.php | - Autoload.php - autoload.php 2.注册类加载器 src/Anfora ...