{"id":5765,"date":"2022-04-03T09:36:46","date_gmt":"2022-04-03T01:36:46","guid":{"rendered":"https:\/\/egonlin.com\/?p=5765"},"modified":"2022-04-03T13:46:35","modified_gmt":"2022-04-03T05:46:35","slug":"06-02-%e5%88%86%e9%a1%b5%e5%99%a8%e7%bb%84%e4%bb%b6","status":"publish","type":"post","link":"https:\/\/egonlin.com\/?p=5765","title":{"rendered":"06-02 \u5206\u9875\u5668\u7ec4\u4ef6"},"content":{"rendered":"<pre><code class=\"language-yaml\">\nclass Pagination(object):\n    def __init__(self,current_page,all_count,per_page_num=2,pager_count=11):\n        &quot;&quot;&quot;\n        \u5c01\u88c5\u5206\u9875\u76f8\u5173\u6570\u636e\n        :param current_page: \u5f53\u524d\u9875\n        :param all_count:    \u6570\u636e\u5e93\u4e2d\u7684\u6570\u636e\u603b\u6761\u6570\n        :param per_page_num: \u6bcf\u9875\u663e\u793a\u7684\u6570\u636e\u6761\u6570\n        :param pager_count:  \u6700\u591a\u663e\u793a\u7684\u9875\u7801\u4e2a\u6570\n\n        \u7528\u6cd5:\n        queryset = model.objects.all()\n        page_obj = Pagination(current_page,all_count)\n        page_data = queryset[page_obj.start:page_obj.end]\n        \u83b7\u53d6\u6570\u636e\u7528page_data\u800c\u4e0d\u518d\u4f7f\u7528\u539f\u59cb\u7684queryset\n        \u83b7\u53d6\u524d\u7aef\u5206\u9875\u6837\u5f0f\u7528page_obj.page_html\n        &quot;&quot;&quot;\n        try:\n            current_page = int(current_page)\n        except Exception as e:\n            current_page = 1\n\n        if current_page &lt;1:\n            current_page = 1\n\n        self.current_page = current_page\n\n        self.all_count = all_count\n        self.per_page_num = per_page_num\n\n        # \u603b\u9875\u7801\n        all_pager, tmp = divmod(all_count, per_page_num)\n        if tmp:\n            all_pager += 1\n        self.all_pager = all_pager\n\n        self.pager_count = pager_count\n        self.pager_count_half = int((pager_count - 1) \/ 2)\n\n    @property\n    def start(self):\n        return (self.current_page - 1) * self.per_page_num\n\n    @property\n    def end(self):\n        return self.current_page * self.per_page_num\n\n    def page_html(self):\n        # \u5982\u679c\u603b\u9875\u7801 &lt; 11\u4e2a\uff1a\n        if self.all_pager &lt;= self.pager_count:\n            pager_start = 1\n            pager_end = self.all_pager + 1\n        # \u603b\u9875\u7801  &gt; 11\n        else:\n            # \u5f53\u524d\u9875\u5982\u679c&lt;=\u9875\u9762\u4e0a\u6700\u591a\u663e\u793a11\/2\u4e2a\u9875\u7801\n            if self.current_page &lt;= self.pager_count_half:\n                pager_start = 1\n                pager_end = self.pager_count + 1\n\n            # \u5f53\u524d\u9875\u5927\u4e8e5\n            else:\n                # \u9875\u7801\u7ffb\u5230\u6700\u540e\n                if (self.current_page + self.pager_count_half) &gt; self.all_pager:\n                    pager_end = self.all_pager + 1\n                    pager_start = self.all_pager - self.pager_count + 1\n                else:\n                    pager_start = self.current_page - self.pager_count_half\n                    pager_end = self.current_page + self.pager_count_half + 1\n\n        page_html_list = []\n        # \u6dfb\u52a0\u524d\u9762\u7684nav\u548cul\u6807\u7b7e\n        page_html_list.append(&#039;&#039;&#039;\n                    &lt;nav aria-label=&#039;Page navigation&gt;&#039;\n                    &lt;ul class=&#039;pagination&#039;&gt;\n                &#039;&#039;&#039;)\n        first_page = &#039;&lt;li&gt;&lt;a href=&quot;?page=%s&quot;&gt;\u9996\u9875&lt;\/a&gt;&lt;\/li&gt;&#039; % (1)\n        page_html_list.append(first_page)\n\n        if self.current_page &lt;= 1:\n            prev_page = &#039;&lt;li class=&quot;disabled&quot;&gt;&lt;a href=&quot;#&quot;&gt;\u4e0a\u4e00\u9875&lt;\/a&gt;&lt;\/li&gt;&#039;\n        else:\n            prev_page = &#039;&lt;li&gt;&lt;a href=&quot;?page=%s&quot;&gt;\u4e0a\u4e00\u9875&lt;\/a&gt;&lt;\/li&gt;&#039; % (self.current_page - 1,)\n\n        page_html_list.append(prev_page)\n\n        for i in range(pager_start, pager_end):\n            if i == self.current_page:\n                temp = &#039;&lt;li class=&quot;active&quot;&gt;&lt;a href=&quot;?page=%s&quot;&gt;%s&lt;\/a&gt;&lt;\/li&gt;&#039; % (i, i,)\n            else:\n                temp = &#039;&lt;li&gt;&lt;a href=&quot;?page=%s&quot;&gt;%s&lt;\/a&gt;&lt;\/li&gt;&#039; % (i, i,)\n            page_html_list.append(temp)\n\n        if self.current_page &gt;= self.all_pager:\n            next_page = &#039;&lt;li class=&quot;disabled&quot;&gt;&lt;a href=&quot;#&quot;&gt;\u4e0b\u4e00\u9875&lt;\/a&gt;&lt;\/li&gt;&#039;\n        else:\n            next_page = &#039;&lt;li&gt;&lt;a href=&quot;?page=%s&quot;&gt;\u4e0b\u4e00\u9875&lt;\/a&gt;&lt;\/li&gt;&#039; % (self.current_page + 1,)\n        page_html_list.append(next_page)\n\n        last_page = &#039;&lt;li&gt;&lt;a href=&quot;?page=%s&quot;&gt;\u5c3e\u9875&lt;\/a&gt;&lt;\/li&gt;&#039; % (self.all_pager,)\n        page_html_list.append(last_page)\n        # \u5c3e\u90e8\u6dfb\u52a0\u6807\u7b7e\n        page_html_list.append(&#039;&#039;&#039;\n                                           &lt;\/nav&gt;\n                                           &lt;\/ul&gt;\n                                       &#039;&#039;&#039;)\n        return &#039;&#039;.join(page_html_list)\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>class Pagination(object): def __init__(self,current_pag [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":5812,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[385,388],"tags":[],"_links":{"self":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/5765"}],"collection":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5765"}],"version-history":[{"count":0,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/5765\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/media\/5812"}],"wp:attachment":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5765"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5765"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5765"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}