django 前端页面如何实现显示前N条数据


Posted in Python onMarch 16, 2020

这个涉及到的知识点是django数据库查询问题,我们可以在view.py文件中操作

blog_list = models.Blog.objects.all()[:3]

这是选取数据库的前三条数据

补充知识:django 数据库查询—如何获取指定范围的数据

检索对象

__exact 精确等于 like ‘aaa'
__iexact 精确等于 忽略大小写 ilike ‘aaa'
__contains 包含 like ‘%aaa%'
__icontains 包含 忽略大小写 ilike ‘%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以…开头
__istartswith 以…开头 忽略大小写
__endswith 以…结尾
__iendswith 以…结尾,忽略大小写
__range 在…范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
__isnull=True 与 __exact=None的区别

1、检索所有的对象

>>> all_entries = Entry.objects.all()

使用all()方法返回数据库中的所有对象。

2、检索特定的对象

使用以下两个方法:

fileter(**kwargs)

返回一个与参数匹配的QuerySet,相当于等于(=).

exclude(**kwargs)

返回一个与参数不匹配的QuerySet,相当于不等于(!=)。

Entry.objects.filter(pub_date__year=2006)

不使用Entry.objects.all().filter(pub_date__year=2006),虽然也能运行,all()最好再获取所有的对象时使用。

上面的例子等同于的sql语句:

select * from entry where pub_date_year='2006′

链接过滤器:

>>> Entry.objects.filter(
… headline__startswith='What'
… ).exclude(
… pub_date__gte=datetime.now()
… ).filter(
… pub_date__gte=datetime(2005, 1, 1)
… )

最后返回的QuerySet是headline like ‘What%' and put_date2005-01-01

另外一种方法:

>> q1 = Entry.objects.filter(headline__startswith=”What”)
>> q2 = q1.exclude(pub_date__gte=datetime.now())
>> q3 = q1.filter(pub_date__gte=datetime.now())

这种方法的好处是可以对q1进行重用。

QuerySet是延迟加载

只在使用的时候才会去访问数据库,如下:

>>> q = Entry.objects.filter(headline__startswith=”What”)
>>> q = q.filter(pub_date__lte=datetime.now())
>>> q = q.exclude(body_text__icontains=”food”)
>>> print q

在print q时才会访问数据库。

其他的QuerySet方法

>>> Entry.objects.all()[:5]

这是查找前5个entry表里的数据

>>> Entry.objects.all()[5:10]

这是查找从第5个到第10个之间的数据。

>>> Entry.objects.all()[:10:2]

这是查询从第0个开始到第10个,步长为2的数据。

>>> Entry.objects.order_by(‘headline')[0]

这是取按headline字段排序后的第一个对象。

>>> Entry.objects.order_by(‘headline')[0:1].get()

这和上面的等同的。

>>> Entry.objects.filter(pub_date__lte='2006-01-01′)

等同于SELECT * FROM blog_entry WHERE pub_date <= '2006-01-01′;

>>> Entry.objects.get(headline__exact=”Man bites dog”)

等同于SELECT … WHERE headline = ‘Man bites dog';

>>> Blog.objects.get(id__exact=14) # Explicit form
>>> Blog.objects.get(id=14) # __exact is implied

这两种方式是等同的,都是查找id=14的对象。

>>> Blog.objects.get(name__iexact=”beatles blog”)

查找name=”beatles blog”的对象,不去饭大小写。

Entry.objects.get(headline__contains='Lennon')

等同于SELECT … WHERE headline LIKE ‘%Lennon%';

startswith 等同于sql语句中的 name like ‘Lennon%',

endswith等同于sql语句中的 name like ‘%Lennon'.

>>> Entry.objects.filter(blog__name__exact='Beatles Blog')

查找entry表中外键关系blog_name='Beatles Blog'的Entry对象。

>>> Blog.objects.filter(entry__headline__contains='Lennon')

查找blog表中外键关系entry表中的headline字段中包含Lennon的blog数据。

Blog.objects.filter(entry__author__name='Lennon')

查找blog表中外键关系entry表中的author字段中包含Lennon的blog数据。

Blog.objects.filter(entry__author__name__isnull=True) 
Blog.objects.filter(entry__author__isnull=False,entry__author__name__isnull=True)

查询的是author_name为null的值

Blog.objects.filter(entry__headline__contains='Lennon',entry__pub_date__year=2008)
Blog.objects.filter(entry__headline__contains='Lennon').filter( entry__pub_date__year=2008)

这两种查询在某些情况下是相同的,某些情况下是不同的。第一种是限制所有的blog数据的,而第二种情况则是第一个filter是

限制blog的,而第二个filter则是限制entry的

>>> Blog.objects.get(id__exact=14) # Explicit form
>>> Blog.objects.get(id=14) # __exact is implied
>>> Blog.objects.get(pk=14) # pk implies id__exact

等同于select * from where id=14

Get blogs entries with id 1, 4 and 7

>>> Blog.objects.filter(pk__in=[1,4,7])

等同于select * from where id in{1,4,7}

Get all blog entries with id > 14

Blog.objects.filter(pk__gt=14)

以上这篇django 前端页面如何实现显示前N条数据就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用soaplib搭建webservice详细步骤和实例代码
Nov 20 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 Python
python实现跨excel的工作表sheet之间的复制方法
May 03 Python
解决pandas 作图无法显示中文的问题
May 24 Python
用python实现刷点击率的示例代码
Feb 21 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
numpy.array 操作使用简单总结
Nov 08 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
Pytorch 如何实现常用正则化
May 27 Python
python 离散点图画法的实现
Apr 01 Python
Python迭代器Iterable判断方法解析
Mar 16 #Python
python 递归调用返回None的问题及解决方法
Mar 16 #Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 #Python
django中的数据库迁移的实现
Mar 16 #Python
django之从html页面表单获取输入的数据实例
Mar 16 #Python
Django实现将views.py中的数据传递到前端html页面,并展示
Mar 16 #Python
Python Django view 两种return的实现方式
Mar 16 #Python
You might like
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
AngularJS中$http使用的简单介绍
2017/03/17 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
input输入框内容实时监测(附代码)
2017/08/15 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
python K近邻算法的kd树实现
2018/09/06 Python
python+pyqt5编写md5生成器
2019/03/18 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
物流管理系毕业生求职信
2014/06/03 职场文书
小学生植树节活动总结
2014/07/04 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
vue3获取当前路由地址
2022/02/18 Vue.js
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers