大家好,在这篇文章中,我们将展示django的分页完整的一个实例,当我们打算用Django中开发博客时,需要将帖子列表分别展示到多个页面上,在这方面,Django具有内置的分页类,可管理分页数据。所有分页方法都使用Paginator类。它实际上是承担将QuerySet拆分为Page对象的工作。在django中可以使用两种方法进行分页,第一种方法是使用基于函数的视图,第二种方法是使用基于类的视图。
现在,首先,需要使用此命令创建一个新的django项目。我称这个项目为MyProject

django-admin startproject ProjectName

首先,需要将目录更改为已创建的项目,然后需要创建一个App,我将其称为MyApp。

python manage.py startapp MyApp

另外,还需要在settings.py(INSTALLED_APPS)中添加新创建的应用。

INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'MyApp']

在此之后进行数据库迁移:

python manage.py migrate

另外,还需要创建一个模板文件夹,因为我们需要向模板文件夹中添加一些html文件,请确保在创建模板文件夹后需要打开settings.py并将模板目录添加到DIRS部分中,如下所示。

TEMPLATES = [    {        'BACKEND': 'django.template.backends.django.DjangoTemplates',        'DIRS': ['templates'],

1:基于函数的视图中的分页
现在,首先,需要在应用程序中打开models.py文件并创建模型。

from django.db import modelsfrom django.utils import timezone# Create your models here.class Post(models.Model):    title = models.CharField(max_length=100)    author = models.CharField(max_length=100)    body = models.TextField()    publish = models.DateTimeField(default=timezone.now())    def __str__(self):        return self.title

基本上,我们有一个具有四个没有id的字段的模型。之后,需要进行这样的迁移。

python manage.py makemigrationspython manage.py migrate

首先,需要打开views.py文件并创建视图功能。

from django.shortcuts import renderfrom .models import Postfrom django.core.paginator import Paginator, EmptyPage, PageNotAnInteger# Create your views here.def Index(request):    post_list = Post.objects.all()    paginator = Paginator(post_list, 2)    page = request.GET.get('page')    try:        posts = paginator.page(page)    except PageNotAnInteger:        posts = paginator.page(1)    except EmptyPage:        posts = paginator.page(paginator.num_pages)    return render(request, 'index.html', {'page':page,'posts':posts})

可以看到我们已经在索引视图功能中完成了分页确定,现在需要在创建的应用程序中创建一个新的urls.py。并链接您的视图功能,像这样:

from django.urls import pathfrom .views import Indexurlpatterns = [    path('', Index),]

而且还需要像这样在主项目urls.py中包含应用程序urls.py

from django.contrib import adminfrom django.urls import path, includeurlpatterns = [    path('admin/', admin.site.urls),    path('', include('MyApp.urls'))]

现在,在的模板文件夹中,需要创建两个这样的html文件。

<html lang="en"><head>    <meta charset="UTF-8">    <title>Titletitle>    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">head><body><div class = "jumbotron">    {% for post in posts %}    <h1 class="display-4">{{post.title}}h1>    Published {{post.publish}} by {{post.author}}    {{post.body|truncatewords:30|linebreaks}}    <hr class="my-4">    {% endfor %}div>{%  include  "pagination.html"  with  page=posts  %}body>html>

所以这是我们的索引html文件,也可以在顶部看到我添加了Bootstrap CDN链接,因为我将使用一些bootstrap样式进行分页。该代码用于包含我们尚未创建的分页文件。

{%  include  "pagination.html"  with  page=posts  %}

由于我们传递给模板的Page对象称为帖子,因此我们将分页模板包括在帖子列表模板中,并传递参数以正确呈现它。可以按照此方法在不同模型的分页视图中重用分页模板。
现在,这是我们的pagination.html文件。

"Page navigation example" >    

class= class= {% if page.has_previous %} class= {% endif %} class= class= class= {% if page.has_next %} class= {% endif %} 现在可以运行的项目,将看到分页。

python manage.py runserver

这将是分页的结果。

2:基于类的视图分页
因此,对于基于类的视图分页,我们需要像这样在views.py文件中进行一些更改。

from django.shortcuts import renderfrom .models import Postfrom django.core.paginator import Paginator, EmptyPage, PageNotAnIntegerfrom django.views.generic import ListView# Create your views here.'''def Index(request):    post_list = Post.objects.all()    paginator = Paginator(post_list, 2)    page = request.GET.get('page')    try:        posts = paginator.page(page)    except PageNotAnInteger:        posts = paginator.page(1)    except EmptyPage:        posts = paginator.page(paginator.num_pages)    return render(request, 'index.html', {'page':page,'posts':posts})'''class PostList(ListView):    queryset = Post.objects.all()    context_object_name = 'posts'    paginate_by = 2    template_name = 'index.html'

django.views.generic.list.ListView提供了一种内置的方法来对显示的列表进行分页。可以通过在视图类中添加paginate_by属性来实现此目的,这会限制每页的对象数,并向上下文中添加paginator和page_obj。要允许用户在页面之间导航,请在模板中添加指向下一页和上一页的链接。
现在,在此之后,需要打开urls.py并注释上一个视图,并添加基于类的视图

from django.urls import pathfrom .views import  PostListurlpatterns = [    #path('', Index),    path('', PostList.as_view())]

可以在顶部看到我们已经导入了PostList,为了保持分页功能,我们必须使用正确的页面。传递给模板的对象。Django的ListView通用视图将所选页面传递到名为page_obj的变量中,因此必须相应地编辑index.html模板,以使用正确的变量包括分页器,如下所示:

{% include 'pagination.html' with page=page_obj %}

因此,如果运行项目,结果跟上面截图是一样的。
完毕,希望这篇对大家学习有帮助。

django 打开的html css_Django分页完整示例相关推荐

  1. Spring Boot + JPA + Freemarker 实现后端分页 完整示例

    Spring Boot + JPA + Freemarker 实现后端分页 完整示例 界面效果 螢幕快照 2017-07-28 15.34.42.png 螢幕快照 2017-07-28 15.34.2 ...

  2. Django上传文件及分页

    Django上传文件及分页 文章目录 Django上传文件及分页 一.上传图片 二.在管理页面admin中上传图片 三.自定义form表单中上传图片 四.显示图片 五.分页 六.省市区案例 一.上传图 ...

  3. eclipse 创建maven 项目 动态web工程完整示例

    需求表均同springmvc案例 此处只是使用maven 注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了 没有的话需要安装m ...

  4. react-template 包含客户端,服务端渲染完整示例

    原文链接 React version 16.2 版本脚手架 包含客户端,服务端渲染完整示例,使用了最新的react,并实现version 16.2 最新的服务端渲染; 解决了一些之前的服务端渲染bug ...

  5. 利用ffmpeg来进行视频解码的完整示例代码

    (转)利用ffmpeg来进行视频解码的完整示例代码(H.264) Decode() { FILE  * inpf; int  nWrite; int  i,p; int  nalLen; unsign ...

  6. springcloud项目的启动顺序_Spring Cloud微服务项目完整示例,含注册中心,网关,断路器等等...

    Spring Cloud微服务项目完整示例 目的是为了演示基于Spring Cloud微服务框架,搭建一个接近业务实际场景的项目,只实现了后端项目,前端可以使用VUE或者其他框架. 后端框架包括注册中 ...

  7. php pdo 与对比mysql,php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例...

    php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例 本文实例讲述了php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率.分享给大家供大家参考,具体如下: ...

  8. EasyUI(2):PHP+EasyUI的增、删、改操作的完整示例

    想完成一个EasyUI+PHP的完整示例,主要针对一个数据表记录的增加.删除和修改,方便以后写类似的程序. 经过一天多的努力,差不多算完成了,只是后台数据操作部分了. 初始界面: 添加记录: 正确提交 ...

  9. POI操作ppt图表完整示例演示

    poi操作ppt图表史上最完整示例演示和内嵌excel的获取添加数据简单示例,POI3.15版本. 在模板中构造几中基本图表进行测试就行了. 其它操作ppt的基础资料见:http://blog.csd ...

最新文章

  1. Java程序员到架构师的推荐阅读书籍
  2. Java面向对象(2)--类的成员属性
  3. 《精通Spring 4.x 企业应用开发实战》学习笔记
  4. 中科院人工智能应用 福玛特550G解析
  5. service: no such service mysqld 与 MySQL 的开启、关闭和重启
  6. 上传图片并显示缩略图的最简单方法(c#)
  7. np.multipy()函数解读
  8. windows 上vim 插件安装
  9. 读书笔记—产品型社群:互联网思维的本质
  10. 形容等待时间长的句子_形容“等待时间长”的成语有哪些?
  11. c语言数字大小排序的理解,教孩子数字比大小,排序很重要
  12. ABAQUS如何输出应力应变曲线(XY曲线)
  13. 真相(truth)最可怕的敌人不是谎言(lie),而是神话(myth)---《唐浩明点评曾国藩家书》书评
  14. js清除cookie有时无法清除
  15. bzoj 4398 福慧双修 题解
  16. umi_tools使用
  17. COBIT+2019框架治理和管理目标(资料下载)
  18. c语言允许用户重复计算,C语言-第3章最简单的C程序设计练习题.doc
  19. MarksSpencer玛莎百货验厂标准
  20. 利用Excel处理统计数据

热门文章

  1. python期末设计作品_期末作品检查
  2. 知乎:学计算机的女生都怎么样了?
  3. CMSIS-DAP和J-Link、ST-Link是什么关系?
  4. HDLBits答案(15)_Verilog有限状态机(2)
  5. 树莓派4b上部署yolov3和v3-tiny记录带截图
  6. 基于VHDL报警系统设计
  7. linux有没有递归函数,递归函数
  8. c++ int8_t转int_Python 90行代码让微信地球转起来,你也可以!| 原力计划
  9. 气象背景场_“把脉”风雨 服务为民——甘肃研究型气象预报业务体系发展扫描...
  10. r23中文测试软件,Maxon公布最新的CINEBENCH R23测试软件