django 前端页面如何实现显示前N条数据
这个涉及到的知识点是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*fromentrywherepub_date_year='2006′
链接过滤器:
>>>Entry.objects.filter( …headline__startswith='What' …).exclude( …pub_date__gte=datetime.now() …).filter( …pub_date__gte=datetime(2005,1,1) …)
最后返回的QuerySet是headlinelike‘What%'andput_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”) >>>printq
在printq时才会访问数据库。
其他的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*FROMblog_entryWHEREpub_date<='2006-01-01′;
>>>Entry.objects.get(headline__exact=”Manbitesdog”)
等同于SELECT…WHEREheadline=‘Manbitesdog';
>>>Blog.objects.get(id__exact=14)#Explicitform >>>Blog.objects.get(id=14)#__exactisimplied
这两种方式是等同的,都是查找id=14的对象。
>>>Blog.objects.get(name__iexact=”beatlesblog”)
查找name=”beatlesblog”的对象,不去饭大小写。
Entry.objects.get(headline__contains='Lennon')
等同于SELECT…WHEREheadlineLIKE‘%Lennon%';
startswith等同于sql语句中的namelike‘Lennon%',
endswith等同于sql语句中的namelike‘%Lennon'.
>>>Entry.objects.filter(blog__name__exact='BeatlesBlog')
查找entry表中外键关系blog_name='BeatlesBlog'的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)#Explicitform >>>Blog.objects.get(id=14)#__exactisimplied >>>Blog.objects.get(pk=14)#pkimpliesid__exact
等同于select*fromwhereid=14
Getblogsentrieswithid1,4and7 >>>Blog.objects.filter(pk__in=[1,4,7])
等同于select*fromwhereidin{1,4,7}
Getallblogentrieswithid>14 Blog.objects.filter(pk__gt=14)
以上这篇django前端页面如何实现显示前N条数据就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。