Django實(shí)現(xiàn)分頁(yè)和表格搜索功能

前言:在百度上查找django分頁(yè)功能非常之多替裆,但可用的技術(shù)文檔寥寥無(wú)幾校辩。分頁(yè)雖說(shuō)只是我們開發(fā)項(xiàng)目中一個(gè)很小的功能,但實(shí)現(xiàn)它是十分必要且必須的辆童。因?yàn)閷?shí)現(xiàn)分頁(yè)功能兵迅,能使我們更加清楚明了地查看頁(yè)面信息浓若。

一、django分頁(yè)功能的實(shí)現(xiàn)(使用django封裝的pagination分頁(yè)器)
話不多說(shuō),直接上代碼友题,再對(duì)代碼作清楚的解析(我想各位看官就明白是咋回事了)
1、后臺(tái)代碼:

        limit = 10
        p = Paginator(data, limit)  # 實(shí)例化一個(gè)分頁(yè)對(duì)象
        page = request.GET.get('page')  # 獲取頁(yè)碼
        # print('我是page------------',page)
        # print('我是id------------',primary_domain_id)
        if page:
            pass
        else:
            page = 1
        try:
            a_a = p.page(page)  # 獲取某頁(yè)對(duì)應(yīng)的記錄
            page1 = p.page(page)
            page_list = page1.object_list
        except PageNotAnInteger:  # 如果頁(yè)碼不是個(gè)整數(shù)
            a_a = p.page(1)  # 取第一頁(yè)的記錄
        except EmptyPage:  # 如果頁(yè)碼太大彩届,沒(méi)有相應(yīng)的記錄
            a_a = p.page(p.num_pages)  # 取最后一頁(yè)的記錄

        return render(request, 'domain_dns/second_domain_query_list.html', {'primary_domain_id':primary_domain_id,'page_list':page_list,'hostlist_search_q':hostlist_search_q,'second_list_obj': a_a,'p':p})

a拾并、上述的代碼中:p = Paginator(data, limit) # 實(shí)例化一個(gè)分頁(yè)對(duì)象,data可以是從數(shù)據(jù)庫(kù)表(django的models實(shí)例化的<class Query>對(duì)象)怠缸,也可以是python原生的列表(list)和元組(tupple)對(duì)象(必須要有count方法并且可以切分)诗轻。這是我們?cè)谧龇猪?yè)時(shí)必須要牢記的;
b揭北、上述代碼中:page_list = page1.object_list 這里的page_list就是我們向前端發(fā)送的每一頁(yè)要展示的數(shù)據(jù)扳炬;
有了上面a吏颖、b兩小點(diǎn)的常識(shí),再來(lái)宏觀的理解django的分頁(yè)功能就很容易了恨樟。

2半醉、前端代碼:

            <ul class="pagination">
                <li class="">   {% if second_list_obj.has_previous %}
               <a href="?id={{ id }}&page={{ second_list_obj.previous_page_number }}&hostlist_search_q={{ hostlist_search_q }}">上一頁(yè)</a>
                {% endif %}
                </li>
                    <li class=" "><span>第{{ second_list_obj.number }}頁(yè) | 共{{ p.num_pages}}頁(yè)</span></li>
                <li class="">
                    {% if second_list_obj.has_next %}
                        <a href="?id={{ id }}&page={{ second_list_obj.next_page_number }}&hostlist_search_q={{ hostlist_search_q }}">下一頁(yè)</a>
                    {% endif %}
                </li>
            </ul>
<span style="color: #8c8c8c"> 總計(jì){{ second_list_obj.paginator.count }}條數(shù)據(jù),總計(jì){{ second_list_obj.paginator.num_pages }}頁(yè)</span>

3、django分頁(yè)原理:后臺(tái)不給前端傳page參數(shù)時(shí)默認(rèn)page=1劝术,默認(rèn)展示第一頁(yè)的內(nèi)容缩多。當(dāng)在前端點(diǎn)擊下一頁(yè)或者上一頁(yè)(又或者選擇跳到第幾頁(yè))的時(shí)候,前端給后臺(tái)發(fā)送GET請(qǐng)求傳遞page參數(shù)养晋,例如:前端向后臺(tái)里傳遞的page=5衬吆,后臺(tái)會(huì)將整個(gè)data按照l(shuí)imit值切割成10份(上述代碼中l(wèi)imit=10,可自定義)匙握,將第五份的值返回給前端做展示咆槽。
注意:前端的分頁(yè)往往是假分頁(yè),對(duì)后臺(tái)來(lái)說(shuō)是一頁(yè)(只在一個(gè)url圈纺,前端分頁(yè)針對(duì)數(shù)據(jù)量較小的時(shí)候:1000條數(shù)據(jù)以內(nèi)秦忿,這是因?yàn)橐紤]到機(jī)器的性能和客戶訪問(wèn)瀏覽器時(shí)的體驗(yàn));而上述的分頁(yè)方式實(shí)際是后臺(tái)來(lái)做的蛾娶,每一頁(yè)都是不同的url灯谣,對(duì)于數(shù)據(jù)量大時(shí)是非常必要的。
友情提示:當(dāng)數(shù)據(jù)量特別大時(shí)蛔琅,可以在查詢mysql前面加個(gè)內(nèi)存中間件:redis胎许,如此能極大地優(yōu)化查詢性能(這里就不深究性能優(yōu)化的事啦!)罗售。

二辜窑、搜索字符串
1、搜索字符串相對(duì)來(lái)就比較簡(jiǎn)單了寨躁,我所說(shuō)的搜索是針對(duì)后臺(tái)數(shù)據(jù)庫(kù)的搜索穆碎。使用django自帶的filter數(shù)據(jù)庫(kù)查詢器

2、直接上代碼:

        if Second_domain.objects.filter(item_info__icontains='qinshilin'):
            search_contents = Second_domain.objects.filter(item_info__icontains='qinshilin')
            print(search_contents)

item_info:你自定義的數(shù)據(jù)庫(kù)表中字段职恳,也就是說(shuō)你要查Second_domain表中的item_info列中的'qinshilin'字段所禀;
__icontains:不區(qū)分大小寫的模糊匹配。很好理解放钦,即可以匹配到qinshilin色徘,qinshilin123,sea121QinShilin232等等......上述的代碼執(zhí)行的結(jié)果操禀,這些都是可以匹配到的褂策,當(dāng)然也支持中文的搜索,假如你要搜索'覃士林',也是能從數(shù)據(jù)庫(kù)中查到的

總結(jié):記錄一些Django開發(fā)中常用的小功能斤寂,方便自己以后的查看蔑水,也是因?yàn)榘俣壬隙际悄愠业模页愕难锶铮瓉?lái)抄去都沒(méi)了一篇正確的技術(shù)文檔,也方便大家正在python學(xué)習(xí)中能通過(guò)一篇正確的文章更好的理解這些小的功能丹擎。

實(shí)現(xiàn)效果:


效果圖.png

轉(zhuǎn)載請(qǐng)注明:覃士林的技術(shù)文檔 http://www.reibang.com/p/a549c0280486

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尾抑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蒂培,更是在濱河造成了極大的恐慌再愈,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件护戳,死亡現(xiàn)場(chǎng)離奇詭異翎冲,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)媳荒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門抗悍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人钳枕,你說(shuō)我怎么就攤上這事缴渊。” “怎么了鱼炒?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵衔沼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我昔瞧,道長(zhǎng)指蚁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任自晰,我火速辦了婚禮凝化,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缀磕。我一直安慰自己缘圈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布袜蚕。 她就那樣靜靜地躺著糟把,像睡著了一般。 火紅的嫁衣襯著肌膚如雪牲剃。 梳的紋絲不亂的頭發(fā)上遣疯,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音凿傅,去河邊找鬼缠犀。 笑死数苫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辨液。 我是一名探鬼主播虐急,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼滔迈!你這毒婦竟也來(lái)了止吁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤燎悍,失蹤者是張志新(化名)和其女友劉穎敬惦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谈山,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俄删,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奏路。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畴椰。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鸽粉,靈堂內(nèi)的尸體忽然破棺而出迅矛,到底是詐尸還是另有隱情,我是刑警寧澤潜叛,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布秽褒,位于F島的核電站,受9級(jí)特大地震影響威兜,放射性物質(zhì)發(fā)生泄漏销斟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一椒舵、第九天 我趴在偏房一處隱蔽的房頂上張望蚂踊。 院中可真熱鬧,春花似錦笔宿、人聲如沸犁钟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涝动。三九已至,卻和暖如春炬灭,著一層夾襖步出監(jiān)牢的瞬間醋粟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留米愿,地道東北人厦凤。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像育苟,于是被迫代替她去往敵國(guó)和親较鼓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容