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使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 Python
多个应用共存的Django配置方法
May 30 Python
对pandas处理json数据的方法详解
Feb 08 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
python设置随机种子实例讲解
Sep 12 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
python模拟斗地主发牌
Apr 22 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 Python
Python+OpenCV图像处理——实现轮廓发现
Oct 23 Python
Python中Selenium对Cookie的操作方法
Jul 09 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中的日期及时间
2006/11/23 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
php中生成随机密码的自定义函数代码
2013/10/21 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
深入理解Vue transition源码分析
2017/07/30 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
python3中rank函数的用法
2019/11/27 Python
python中数据库like模糊查询方式
2020/03/02 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
企业形象策划方案
2014/05/29 职场文书
新文化运动的基本口号
2014/06/21 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
行政助理岗位职责
2015/02/10 职场文书
2015新学期开学寄语
2015/02/26 职场文书
企业承诺书格式范文
2015/04/28 职场文书
边城读书笔记
2015/06/29 职场文书