Django Model数据在html中分页显示

介绍

本人使用Django建立了一个APP,还有html template,但是老师要求对html里的数据分页显示,找了很多方法也没有成功套用,下面我将我的方法介绍一下,希望能对大家有帮助!主要是通过url传递page_id的参数,然后仅返回需要页的数据给前端进行显示!

步骤

  1. 你建立的APP目录下(注意不是项目根目录)的urls.py文件(默认情况下是没有的,需要新建,并在项目主文件夹的urls.py中include该APP的urls文件)中调用path函数新增下图的第二个path,将page_id作为url中的参数,并且将该url链接到该APP的views.py中的处理函数(我这里是DXYanalysis1),name可能可以随意指定(本人目前没有发现其特殊用处)
    APP DXYanalysis的urls.py
    项目主文件夹的urls.py
    实现预期效果:在浏览器中输入“localhost:8000/DXYanalysis/2/”时,page_id为2(page_id可以在views.py的对应函数中得到),然后仅返回第2页的数据

  2. 在创建的APP的views.py文件中的DXYanalysis1函数参数中,写上“page_id”
    Epidemic是我建立的模型,“Epidemic.objects.all()”获得我已经存储好的所有Epidemic模型数据,在后面用“[a,b]”进行切片,获得第a条到b-1条数据,我这里是获取了第page_id页的数据(设置为20条),最终在“epidemic_list”中返回;
    可能你会观察到我定义的context里面传了page_id参数回去,这是我为了后面在html中显示当前是第几页而设置的。
    APP的views.py

  3. 接下来给大家介绍一下我的html template “DXYanalysis.html”
    如下图,我使用table对于前面views.py中传来的epidemic_list列表数据进行显示,这时传过来的数据条数是已经控制好了的;
    注意到下面的input的value我设置为了 {{page_id}},这样可以直接显示是第几页;
    下面的两个button可以用来翻页,分别调用lastPage和nextPage这两个js函数;
    DXYanalysis.html
    关于lastPage和nextPage这两个函数的实现,是这样的:(在这里我介绍lastPage的实现,nextPage的实现是相似的)
    先通过 document.getElemenrtById(你的input的id)获得当前页的值,然后判断是否是第一页,若是第一页,则alert没有上一页了;不是第一页,则用window.location.href重定向到上一页的url(url请根据你的具体实现要求改动)lastPage和nextPage函数实现

  4. 通过上面的步骤,就实现了Django结合html的分页,运用了较少的js(对于js本人一直很头疼),最后在浏览器中的显示是这样的:
    第一页的数据:
    localhost:8000/DXYanalysis/1/
    此时点击上一页会报错:

    点击下一页就会跳转到第二页:

总结

本人在python、Django和html的知识了解不深,如果有说错的地方请大家见谅指正,有更好的方法也欢迎交流!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Django数据库读取数据并在前端页面上显示,您需要完成以下步骤: 1. 定义模型:在models.py文件定义一个模型类,该类将映射到数据的表。例如,如果您要从名为“books”的表读取数据,则可以定义一个名为“Book”的模型类。 2. 创建视图:在views.py文件创建一个视图函数,该函数将从数据检索数据并将其传递给模板。您可以使用Django ORM(对象关系映射)来检索数据。 3. 创建模板:在templates文件夹创建一个HTML模板,该模板显示数据检索的数据。您可以使用Django模板语言来渲染数据。 4. 配置URL:在urls.py文件配置URL模式,以便在用户访问特定URL时调用视图函数。 5. 运行应用程序:运行Django应用程序并在浏览器访问URL以查看从数据检索的数据。 希望这可以帮助您开始在Django数据库读取数据并在前端页面上显示。 ### 回答2: Django 是一种常用的 Web 开发框架,它提供了许多工具,使得从数据读取数据变得非常容易。一般来说,要把数据显示在前端页面,需要经过以下步骤: 1.建立模型: 在 Django ,通常会先在模型定义数据表结构。通过 Django 的 ORM (Object Relational Mapping,对象关系映射) 技术,将模型数据表映射到实际的数据。ORM 充分利用了 Python 的动态特性,使得开发者可以像操作对象一样来操作数据。 2.写视图函数: 视图函数是 Django 处理请求的核心,是连接模型和模板的桥梁。视图函数从模型获取数据,然后将数据传递给模板,以渲染出最终的 HTML 页面。 3.编写模板模板是前端页面的核心,其包含了 HTML、CSS 和 JavaScript 等代码,用于展示和交互。在 Django 模板可以访问传递给它的数据,并将数据呈现为页面上的动态内容。 4.在路由指定 URL: 最后,在路由 (urlconf) 为视图函数指定 URL,使得在浏览器输入相应的 URL 可以访问到我们编写的视图函数,并展示出最终的页面数据。 总之,使用 Django数据读取数据显示在前端页面比较简单、高效,可以充分利用 Django 提供的 ORM 和模板引擎技术,使得我们可以快速、轻松地完成数据展示需求。 ### 回答3: Django是一款基于MVC(Model-View-Controller)架构模式的Python Web框架,它可以轻松地帮助你完成Web应用程序开发,包括从数据库读取数据并在前端页面上展示数据。 首先,你需要定义你的数据模型,这可以通过使用Django的ORM(Object-Relational Mapping)来完成。ORM是一种把数据库表映射成类以及数据库记录映射成对象的技术,它的作用就是让你可以用Python代码来操作数据库而不是编写复杂的SQL语句。 例如,在你的应用程序,你可能会建立一张数据库表来存储用户信息,你可以在models.py文件定义一个名为User的类来映射该表: ``` from django.db import models class User(models.Model): name = models.CharField(max_length=50) age = models.IntegerField() email = models.EmailField(max_length=200, unique=True) ``` 上面的代码定义了一个User类,该类继承自Django提供的models.Model类,表示这是一个数据模型类。其,name、age、email都是User表的字段,它们的类型分别是CharField、IntegerField、EmailField。CharField表示该字段为字符类型,max_length为50;IntegerField表示该字段为整型,EmailField表示该字段为电子邮件地址,max_length为200,并要求该字段唯一。 接下来,在你的视图函数定义一个查询函数,用于从数据查询所有的用户信息: ``` from .models import User from django.shortcuts import render def show_users(request): users = User.objects.all() return render(request, 'users.html', {'users': users}) ``` 上面的代码,我们首先导入了User模型类,并通过调用`User.objects.all()`方法来获取所有的用户信息。使用`render`函数来渲染前端页面,其第一个参数是`request`,第二个参数是模板的名称,第三个参数是前端需要展示的数据。 最后,在模板文件(users.html),你可以像使用Python变量一样使用查询结果的用户对象: ``` {% for user in users %} <tr> <td>{{ user.name }}</td> <td>{{ user.age }}</td> <td>{{ user.email }}</td> </tr> {% endfor %} ``` 以上是Django数据读取数据并在前端页面上展示数据的简单实现过程。它只是Django ORM和视图层的一个简单示例,开发者根据实际情况可以结合实际情况灵活运用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值