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使用wmi模块获取windows下硬盘信息的方法
May 15 Python
Python图像灰度变换及图像数组操作
Jan 27 Python
浅谈Python数据类型之间的转换
Jun 08 Python
Python中使用platform模块获取系统信息的用法教程
Jul 08 Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 Python
python简单操作excle的方法
Sep 12 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
Python中filter与lambda的结合使用详解
Dec 24 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
Jun 23 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 Python
Python OpenGL基本配置方式
May 20 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
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
php通过获取头信息判断图片类型的方法
2015/06/26 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
2016/08/29 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
vue interceptor 使用教程实例详解
2018/09/13 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
Linux CentOS7下安装python3 的方法
2018/01/21 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
python中cPickle类使用方法详解
2018/08/27 Python
pandas通过索引进行排序的示例
2018/11/16 Python
Python对象与引用的介绍
2019/01/24 Python
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
Python何时应该使用Lambda函数
2019/07/02 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
2019/12/11 Python
python语言中有算法吗
2020/06/16 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
迟到检讨书1000字
2014/01/15 职场文书
学习心理学的体会
2014/11/07 职场文书
2014年会计个人工作总结
2014/11/24 职场文书
Python函数中apply、map、applymap的区别
2021/11/27 Python