1. 程式人生 > >Django中ListView分頁技術

Django中ListView分頁技術

分頁技術在Web開發中應用非常頻繁。常見的WEB中都是用javascript去控制的,而Django中分頁非常方便,通過Pagination你可以很方便達到分頁效果。今天主要說的是共同檢視中ListView的分頁處理,本質還是依賴與Pagination。

資料模型:models.py

from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Msg(models.Model):
    title = models.CharField(max_length = 30)
    content = models.TextField()
    user = models.ForeignKey(User)
    ip = models.IPAddressField()
    datetime = models.DateTimeField(auto_now_add = True)
    click_count = models.IntegerField(default = 0)

    def __unicode__(self):
        return self.title

構造檢視:views.py

from django.views.generic import ListView
from msg_board.models import Msg
ITEMS_PER_PAGE = 3


class MsgList(ListView):
    model = Msg#資料模型
    context_object_name = 'msg_list'#模板中變數
    template_name = 'index.html'#模板檔案
    paginate_by = ITEMS_PER_PAGE#一個頁面顯示的條目

URL對映:

工程\App\urls.py

from django.conf.urls import patterns, include, url
from msg_board.views import MsgList

urlpatterns = patterns('',
    # Examples:
    url(r'^$',MsgList.as_view(), name = 'index'),
)

工程\urls.py
from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    # url(r'^mysite/', include('mysite.mysite.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
    
    #host page
    url(r'^mysite/',include('msg_board.urls', namespace = 'msg_board')),
)

模板檔案:index.html
<html>
<head><title>msg_board</title>
<style type="text/css">
table{border:3 solid black; border-collapse:collapse}
table th, table td{border:2 solid black}
</style>

</head>
<body>
<h3>Message:</h3>
{% if msg_list %}
    <table id = "msgs">
        <tr>
            <th>Title</th>
            <th>Content</th>
            <th>Author</th>
            <th>Ip</th>
            <th>Time</th>
            <th>Click</th>
        </tr>
    {%for msg in msg_list %}
        <tr>
            <td>{{msg.title}}</td>
            <td>{{msg.content}}</td>
            <td>{{msg.user}}</td>
            <td>{{msg.ip}}</td>
            <td>{{msg.datetime}}</td>
            <td>{{msg.click_count}}</td>
        </tr>
    {% endfor%}
    </table>
    {% if is_paginated %}
    <div class="pagination">
        <span class="page-links">
            {% if page_obj.has_previous %}
                <a href="/mysite?page={{ page_obj.previous_page_number }}">上一頁</a>
            {% endif %}
            {% if page_obj.has_next %}
                <a href="/mysite?page={{ page_obj.next_page_number }}">下一頁</a>
            {% endif %}
            <span class="page-current">
                第{{ page_obj.number }}頁 ,工{{ page_obj.paginator.num_pages }}頁。
            </span>
        </span>
    </div>
    {%endif%}
{% else %}
<p>No msgs !!!</p>
{% endif %}
</body>
</html>

效果圖:


相關推薦

DjangoListView技術

分頁技術在Web開發中應用非常頻繁。常見的WEB中都是用javascript去控制的,而Django中分頁非常方便,通過Pagination你可以很方便達到分頁效果。今天主要說的是共同檢視中ListView的分頁處理,本質還是依賴與Pagination。 資料模型:mode

djangoorm功能(內置

com 模塊 ren block views ext 如何解決 name view 分批獲取數據的方法 數據庫方法 models.Uinfo.objects.all()[10:20] django自帶的方法 創建一個新的url urlpatterns = [ url

JavaWeb技術

前段時間學習SSH框架用到分頁知識,為此還回顧了一下之前JavaWeb中的分頁技術 首先我們先建立一個庫和表用來展示分頁結果 create table Employee( empId int(11) NOT NULL AUTO_INCREMENT primary key, empName

django實現查詢

首先要實現分頁查詢必須給定倆個引數page(當前頁數)和pages(每頁顯示的資料量,即顯示幾條資料): 上程式碼: from django.core.paginator import Paginator def select_master(request):

django標籤

class Pagination: def __init__(self, page, page_total, per_one_page=15, max_page=11): ''' :param page: 當前頁 :param page_tota

Django 設定頁碼,只顯示當前以及左右兩

設定後的效果如下: Django 給我們提供了分頁的功能:`Paginator`和`Page`類都是用來做分頁的。他們在Django中的路徑為:`from django.core.paginator import Page, Paginator` 先簡單解釋一下他們的屬性和方法:

面試問題之:AndroidListView載入資料

熟悉Android的朋友們都知道,不管是微部落格戶端還是新聞客戶端,都離不開列表元件,可以說列表元件是Android資料展現方面最重要的元件,我們今天就要講一講列表元件ListView載入資料的相關內容。通常來說,一個應用在展現大量資料時,不會將全部的可用資料都呈現給

androidlistview載入資料

               前段時間做的新浪微博專案一直想實現listview分頁載入資料,今天終於實現了,哈哈!感覺挺好的,今天又寫了個demo給大家分享下。               首先說下listview的優化方案,這也是面試中常考的題目。優化方案有三種:1,如

django實現功能

https://docs.djangoproject.com/en/2.1/topics/pagination/ #在views中,注意合併方法。提前做好框架設計。 from django.core.paginator import Paginator from django.sho

easyui 的datagrid技術實現

一些基本的知識參考官網          http://www.jeasyui.com/documentation/index.php# 這裡我強調二點 第一點 datagrid會向後臺傳遞  rows(每一頁展示多少條資料), page(第幾頁) 這兩個資料,而在

angularjs指令

想要 font temp fun att dir val deb 傳遞 自定義指令 import angular from ‘angular‘; /** * @ngdoc module * @name components.page * @description

Django自帶

per ews eat tor pla ont models obj pre urls.py 1 from django.conf.urls import url 2 from django.contrib import admin 3 from app01 imp

11.技術

new string 訪問 clas index () 前臺 mit 查詢 分頁的實現過程 1.前臺傳入 想要訪問的頁碼,如我想訪問第5頁了 2.後臺接收到這個頁碼,再查詢出總記錄數(總記錄數用於得到共有多少頁) 3.根據頁碼 和 總記錄數,創建出一個Page對象 (這

使用插件pagehelper在mybatis實現查詢

通過 否則 跟著 jar包 自動識別 lds equals 數值 可用 快速參考步驟:   1.  引入jar包 <dependency>  <groupId>com.github.pagehelper</groupId>  <a

js

{} 核心 情況 get == set for pre 哈哈 分頁是前端經常會用到的一個非常實用的一個知識點,今天閑來沒事,做了一個小demo,雖然樣子,比較醜,哈哈哈,但是這是分頁的核心思想都在,希望能給某個小夥伴一些啟發。可直接復制在編輯器中運行。 <!DOCT

技術

mys 分頁 bsp sql 從表 查詢 mysql分頁 select sele 分頁算法需要的變量: pageSize:每頁顯示多少條 pageNow:要顯示哪頁 pageCount:一共多少頁 rowCount:一共多少條記錄 pageSize是指定好的,rowCo

Django組件——器和中間件

ber 處理 spa 使用 view template 中間 display temp 分頁器 Django內置分頁器(paginator) 分頁器函數為paginator,裏面有幾個重要的參數需要我們了解 paginator = Paginator(book_l

關於easyuidatagrid問題--摘

bool ams 版本 捷信 default table ... Matter agen 首先datagrid中的pagination屬性設置為true: 如 $(‘#dg1‘).datagrid({ url:"{:U(‘Rearlogin/ajaxNoticeA

Django內置擴展

tom size pos sel oot oct iou HA object url文件 urlpatterns = [ path(‘admin/‘, admin.site.urls), path(‘index1.html/‘, views.index1)

技術 -servlet

數據 分頁技術 技術 變量 多少 定制 程序 page 顯示 一、思路:   定義四個分頁變量。   pagenow 表示第幾頁,該變量由用戶決定的,是變化的。   pageSize 每頁顯示幾條記錄,由程序定義,也可以由程序定制。   pageCount 表示共有多少頁,