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 Web开发模板引擎优缺点总结
May 06 Python
python获取远程图片大小和尺寸的方法
Mar 26 Python
python简单的函数定义和用法实例
May 07 Python
如何处理Python3.4 使用pymssql 乱码问题
Jan 08 Python
Python编程实现微信企业号文本消息推送功能示例
Aug 21 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
Python给图像添加噪声具体操作
Mar 03 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
python 生成器和迭代器的原理解析
Oct 12 Python
Python 使用type来定义类的实现
Nov 19 Python
使用python动态生成波形曲线的实现
Dec 04 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 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 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
Win下如何安装PHP的APC拓展
2013/08/07 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
python同时给两个收件人发送邮件的方法
2015/04/30 Python
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
Python从使用线程到使用async/await的深入讲解
2018/09/16 Python
使用Python进行目录的对比方法
2018/11/01 Python
在keras里实现自定义上采样层
2020/06/28 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
自考生毕业自我鉴定
2013/10/10 职场文书
思想汇报范文
2013/11/04 职场文书
家长给学校的建议书
2014/05/15 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
文案策划岗位职责
2015/02/11 职场文书
商务宴会祝酒词
2015/08/11 职场文书