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 相关文章推荐
Python实现将照片变成卡通图片的方法【基于opencv】
Jan 17 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 Python
浅谈django的render函数的参数问题
Oct 16 Python
python实现本地图片转存并重命名的示例代码
Oct 27 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
Python2与Python3的区别详解
Feb 09 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
May 21 Python
了解一下python内建模块collections
Sep 07 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
php zend 相对路径问题
2009/01/12 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
JQuery之拖拽插件实现代码
2011/04/14 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
python编写简单爬虫资料汇总
2016/03/22 Python
浅谈python可视化包Bokeh
2018/02/07 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
电气工程和自动化自荐信范文
2013/12/25 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
员工安全生产承诺书
2014/05/22 职场文书
护校行动方案
2014/05/31 职场文书
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL