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 相关文章推荐
Python3中多线程编程的队列运作示例
Apr 16 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
Jan 20 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
python 使用pandas计算累积求和的方法
Feb 08 Python
Flask框架模板继承实现方法分析
Jul 31 Python
python实现从wind导入数据
Dec 03 Python
Django 返回json数据的实现示例
Mar 05 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
python实现移动木板小游戏
Oct 09 Python
python 下载文件的几种方式分享
Apr 07 Python
基于python定位棋子位置及识别棋子颜色
Jul 26 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
E路文章系统PHP
2006/12/11 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
Python中的高级函数map/reduce使用实例
2015/04/13 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
教育科学研究生自荐信
2013/10/09 职场文书
英文版银行求职信
2013/10/09 职场文书
资料员的岗位职责
2013/11/20 职场文书
工程造价专业求职信
2014/07/17 职场文书
流动人口婚育证明
2014/10/19 职场文书
2014年财政所工作总结
2014/11/22 职场文书
社区党建工作总结2015
2015/05/13 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
Python 视频画质增强
2022/04/28 Python