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编写简单文件夹内图片浏览工具
Aug 17 Python
PyQt5每天必学之组合框
Apr 20 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
Aug 13 Python
django创建超级用户过程解析
Sep 18 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
Python实现打包成库供别的模块调用
Jul 13 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 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文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
php常用图片处理类
2016/03/16 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
js文件中调用js的实现方法小结
2009/10/23 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
Python set集合类型操作总结
2014/11/07 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
python远程邮件控制电脑升级版
2019/05/23 Python
Python用字典构建多级菜单功能
2019/07/11 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
python Selenium 库的使用技巧
2020/10/16 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
资深生产主管自我评价
2013/09/22 职场文书
酒吧创业计划书
2014/01/18 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
入门学习Go的基本语法
2021/07/07 Golang