1 ""」 2 分页组件使用示例: 3 4 OBJ =改ページ(request.GET.get( 'ページ'、1)、(USER_LIST)lenは、request.path_info) 5 page_user_list = USER_LIST [obj.start:obj.end ] 6 page_html = obj.page_html() 7 8 リターン(要求、 'index.htmlを' { 'ユーザ':page_user_list、 'page_html':page_html})レンダリング 9 10 11 ""」 12 13 14 クラスページ区切り(物体) : 15 16 DEF __init__(自己、CURRENT_PAGE、all_count、要求、per_page_num = 2、pager_count = 11 ): 17 """ 18 ページングデータパッケージ 19。 :のparam CURRENT_PAGE:このページ 20がある :のparam ALL_COUNTは、次のとおり、データベース内のデータの総数 21 ページあたりのデータの数が表示されます:: PARAM per_page_num 22がある :のparam pager_count:まで表示ページ番号に 23 「」 " 24 25 試み: 26である CURRENT_PAGE = INT(CURRENT_PAGE) 27 を除く:例外としてE 28 。CURRENT_PAGE 1 = 29 30 IF CURRENT_PAGE <1 : 31である CURRENT_PAGE 1 = 32 33である self.current_page = CURRENT_PAGE 34 35 self.all_count = all_count 36 self.per_page_num = per_page_num 37 38 39 #总页码 40 all_pager、TMP = divmod(all_count、per_page_num) 41 であればTMP: 42 + = 1 all_pager 43 self.all_pager = all_pager 44 45 46 自己。 pager_count = pager_count 47 self.pager_count_half = INT((pager_count - 1)/ 2 ) 48 49 #保存搜索条件 50 インポートコピー 51 self.params = copy.deepcopy(request.GET) 52 53 @property 54は デフ(自己)開始: 55 リターン(self.current_page - 1)* self.per_page_num 56 57 @property 58 デフ端(自己): 59 戻り self.current_page * self.per_page_num 60 61 DEF page_html(自己): 62 #如果总页码<11个: 63 であれば self.all_pager <= self.pager_count: 64 pager_start = 1 65 + = self.all_pager 1 pager_end。 66 #総P> 11。 67 、他: 68 #このページのページ番号が11月2日<=ページまでに表示された場合は 69 のIF self.current_page <= self.pager_count_half: 70 。pager_start 1 = 71である pager_end = 。+ 1 self.pager_count 72 73である #このページよりも大きい5。 74 他: 75 #の最後のページをめくる 76 IF(self.current_page self.pager_count_half +)> self.all_pager: 77 。pager_end = self.all_pager 1 + 78 pager_start = self.all_pager - self.pager_count + 1 79 他: 80 pager_start = self.current_page - self.pager_count_half 81 pager_end = self.current_page + self.pager_count_half + 1 82 83 page_html_list = [] 84 85 FIRST_PAGE = ' <LI> <a href="?page=%s">首页</a>に</ LI> '%(1 ) 86 page_html_list.append(FIRST_PAGE) 87 88 であれば self.current_page <= 1 : 89 PREV_PAGE =' <LIクラス= "無効"> <a href="#">上一页する</a>ます。</ li> ' 90 他: 91 PREV_PAGE = " <LI> <A HREF = "ページ=%sの?" >上一页</a>の</ LI> '%(self.current_page - 1 ) 92 93 page_html_list.append(PREV_PAGE) 94 95 のための I における範囲(pager_start、pager_end): 96 self.params [ ' ページ' ] = I 97 もし私== self.current_page: 98 TEMP = "<LIクラス= "アクティブ"> <a href="?%s">%S </a>の</ LI> '%(self.params.urlencode()、I、) 99 他: 100 TEMP = ' < LI> <a href="?%s">%S </a>の</ LI> '%(self.params.urlencode()、I) 101 page_html_list.append(TEMP) 102 103 もし self.current_page> = self.all_pager: 104 にnext_page = ' <LIクラス= "無効"> <a href="#">下一页する</a>ます。</ li> ' 105 他: 106 にnext_page = ' <LI> <a href="?page=%s">下一页</a>に</ LI> '%(self.current_page + 1 ) 107 page_html_list.append(にnext_page) 108 109 LAST_PAGE = ' <LI> <a href="?page=%s">尾页</a>の</ LI> '%(自己.all_pager) 110 page_html_list.append(LAST_PAGE) 111 112 戻り '' .join(page_html_list)
1 から django.shortcutsはインポート、レンダリングのHttpResponse 2 から app01 輸入モデル 3つの 4 #がここにあなたの意見を作成します。 5 デフ指数(要求): 6 #リー= [] 7 #範囲のiについて(100): 8 # li.append(models.Book(名= "图书%S" %I、価格= 10 + I)) 9 #models.Book.objects.bulk_create(LI) 10 #リターンのHttpResponse( 'OK') 11 から app01.page インポート改ページ 12 current_page_num = request.GET.get(' ページ'、1 ) 13 book_list = models.Book.objects.all() 14 改ページ= ページ区切り(current_page_num、book_list.count()、リクエスト) 15 book_list = book_list [pagination.start。 pagination.end] 16 リターンが(リクエスト、レンダリング' index.htmlを'、地元の人々を())
1 <!DOCTYPE HTML > 2 < HTML のlang = "EN" > 3 < ヘッド> 4 < メタのcharset = "UTF-8" > 5 < タイトル>タイトル</ タイトル> 6 < リンクREL = "スタイルシート" のhref = "/静的/ブートストラップ3.3.7-DIST / CSS / bootstrap.css」> 7 </ ヘッド> 8 < ボディ> 9 < UL > {book_list%で書籍の%} 11 < リチウム> {{book.name}} --- {{book.price}} </ 李> 12 {%ENDFOR%} 13 </ UL > 14 < NAV ARIAラベル= "ページナビゲーション" > 15 < UL クラス= "ページネーション" > 16 {{pagination.page_html |安全}} 17 </ UL > 18 </ NAV > 19 20 </ ボディ> 21 </ HTML >