django 前端頁(yè)面如何實(shí)現(xiàn)顯示前N條數(shù)據(jù)
這個(gè)涉及到的知識(shí)點(diǎn)是django數(shù)據(jù)庫(kù)查詢問(wèn)題,我們可以在view.py文件中操作
blog_list = models.Blog.objects.all()[:3]
這是選取數(shù)據(jù)庫(kù)的前三條數(shù)據(jù)
補(bǔ)充知識(shí):django 數(shù)據(jù)庫(kù)查詢—如何獲取指定范圍的數(shù)據(jù)
檢索對(duì)象
__exact 精確等于 like ‘a(chǎn)aa’ __iexact 精確等于 忽略大小寫(xiě) ilike ‘a(chǎn)aa’ __contains 包含 like ‘%aaa%’ __icontains 包含 忽略大小寫(xiě) ilike ‘%aaa%’,但是對(duì)于sqlite來(lái)說(shuō),contains的作用效果等同于icontains。 __gt 大于 __gte 大于等于 __lt 小于 __lte 小于等于 __in 存在于一個(gè)list范圍內(nèi) __startswith 以…開(kāi)頭 __istartswith 以…開(kāi)頭 忽略大小寫(xiě) __endswith 以…結(jié)尾 __iendswith 以…結(jié)尾,忽略大小寫(xiě) __range 在…范圍內(nèi) __year 日期字段的年份 __month 日期字段的月份 __day 日期字段的日 __isnull=True/False __isnull=True 與 __exact=None的區(qū)別
1、檢索所有的對(duì)象
>>> all_entries = Entry.objects.all()
使用all()方法返回?cái)?shù)據(jù)庫(kù)中的所有對(duì)象。
2、檢索特定的對(duì)象
使用以下兩個(gè)方法:
fileter(**kwargs)
返回一個(gè)與參數(shù)匹配的QuerySet,相當(dāng)于等于(=).
exclude(**kwargs)
返回一個(gè)與參數(shù)不匹配的QuerySet,相當(dāng)于不等于(!=)。
Entry.objects.filter(pub_date__year=2006)
不使用Entry.objects.all().filter(pub_date__year=2006),雖然也能運(yùn)行,all()最好再獲取所有的對(duì)象時(shí)使用。
上面的例子等同于的sql語(yǔ)句:
select * from entry where pub_date_year=’2006′
鏈接過(guò)濾器:
>>> 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())
這種方法的好處是可以對(duì)q1進(jìn)行重用。
QuerySet是延遲加載
只在使用的時(shí)候才會(huì)去訪問(wèn)數(shù)據(jù)庫(kù),如下:
>>> 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時(shí)才會(huì)訪問(wèn)數(shù)據(jù)庫(kù)。
其他的QuerySet方法
>>> Entry.objects.all()[:5]
這是查找前5個(gè)entry表里的數(shù)據(jù)
>>> Entry.objects.all()[5:10]
這是查找從第5個(gè)到第10個(gè)之間的數(shù)據(jù)。
>>> Entry.objects.all()[:10:2]
這是查詢從第0個(gè)開(kāi)始到第10個(gè),步長(zhǎng)為2的數(shù)據(jù)。
>>> Entry.objects.order_by(‘headline’)[0]
這是取按headline字段排序后的第一個(gè)對(duì)象。
>>> 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的對(duì)象。
>>> Blog.objects.get(name__iexact=”beatles blog”)
查找name=”beatles blog”的對(duì)象,不去飯大小寫(xiě)。
Entry.objects.get(headline__contains=’Lennon’)
等同于SELECT … WHERE headline LIKE ‘%Lennon%’;
startswith 等同于sql語(yǔ)句中的 name like ‘Lennon%’,
endswith等同于sql語(yǔ)句中的 name like ‘%Lennon’.
>>> Entry.objects.filter(blog__name__exact=’Beatles Blog’)
查找entry表中外鍵關(guān)系blog_name=’Beatles Blog’的Entry對(duì)象。
>>> Blog.objects.filter(entry__headline__contains=’Lennon’)
查找blog表中外鍵關(guān)系entry表中的headline字段中包含Lennon的blog數(shù)據(jù)。
Blog.objects.filter(entry__author__name=’Lennon’)
查找blog表中外鍵關(guān)系entry表中的author字段中包含Lennon的blog數(shù)據(jù)。
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)
這兩種查詢?cè)谀承┣闆r下是相同的,某些情況下是不同的。第一種是限制所有的blog數(shù)據(jù)的,而第二種情況則是第一個(gè)filter是
限制blog的,而第二個(gè)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 > 14Blog.objects.filter(pk__gt=14)
以上這篇django 前端頁(yè)面如何實(shí)現(xiàn)顯示前N條數(shù)據(jù)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. javascript xml xsl取值及數(shù)據(jù)修改第1/2頁(yè)2. 利用CSS3新特性創(chuàng)建透明邊框三角3. ASP.NET MVC使用jQuery ui的progressbar實(shí)現(xiàn)進(jìn)度條4. .NET使用StackTrace獲取方法調(diào)用信息的代碼演示5. IDEA創(chuàng)建Java項(xiàng)目導(dǎo)出Jar包運(yùn)行6. 如何在Notepad++中配置python執(zhí)行命令7. 在Vue中創(chuàng)建可重用的 Transition的方法8. Vue中nvm-windows的安裝與使用教程(親測(cè))9. Vue 自適應(yīng)高度表格的實(shí)現(xiàn)方法10. SpringBoot + validation 接口參數(shù)校驗(yàn)的思路詳解
