django 前端页面如何实现显示前N条数据

作者:luguanyou 时间:2023-06-07 10:50:33 

这个涉及到的知识点是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)

来源:https://blog.csdn.net/luguanyou/article/details/84107060

标签:django,页面,显示,数据
0
投稿

猜你喜欢

  • Firefox下无法正常显示年份的解决方法

    2024-04-18 09:39:50
  • Python日期操作学习笔记

    2021-07-27 21:15:21
  • ASP制作中使用MYSQL的分析

    2008-10-13 09:25:00
  • seo网站如何实现301跳转?

    2010-01-15 12:59:00
  • Python实现模拟分割大文件及多线程处理的方法

    2021-08-26 10:55:12
  • PyQt5 QTable插入图片并动态更新的实例

    2022-02-11 03:22:43
  • Python趣味爬虫之用Python实现智慧校园一键评教

    2022-02-07 17:53:52
  • python树莓派红外反射传感器

    2022-12-05 16:11:47
  • SQL中DATEADD和DATEDIFF的用法示例介绍

    2024-01-27 16:57:58
  • 解决Python2.7中IDLE启动没有反应的问题

    2022-10-17 17:43:57
  • 简单了解python shutil模块原理及使用方法

    2023-02-12 22:07:44
  • Python解决走迷宫问题算法示例

    2023-04-18 02:14:45
  • Python调用高德API实现批量地址转经纬度并写入表格的功能

    2023-12-26 03:22:20
  • 利用ASP在线维护数据库

    2007-10-12 13:53:00
  • JS 类型转换常见方法小结

    2024-04-17 09:49:17
  • Python 编程操作连载之字符串,列表,字典和集合处理

    2021-08-16 11:27:54
  • python3 re返回形式总结

    2023-12-23 16:40:07
  • 关于Python中模块的简介、定义与使用

    2021-01-25 16:09:29
  • python实现在sqlite动态创建表的方法

    2021-08-05 13:54:10
  • sqlserver 支持定位当前页,自定义排序的分页SQL(拒绝动态SQL)

    2024-01-16 03:58:06
  • asp之家 网络编程 m.aspxhome.com