zoukankan      html  css  js  c++  java
  • django创建分页

    前台html代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    </head>
    <body>
        <ul>
            {% for article in articles %}
                <li>{{ article.title }}</li>
            {% endfor %}
        </ul>
        <nav aria-label="Page navigation">
          <ul class="pagination">
            {% if page_obj.has_previous %}
              <li><a href="{% url 'viewlist' %}?page={{ page_obj.previous_page_number }}">上一页</a></li>
            {% else %}
              <li class="disabled"><a>上一页</a></li>
            {% endif %}
    
    {#         第一页#}
          {% if current_page > 3 %}
            <li><a href="{% url 'viewlist' %}?page=1">1</a></li>
          {% endif %}
    
    {#       左边页码 #}
          {% for left_page in left_pages %}
            {% if left_page > 0 %}
              <li><a href="{% url 'viewlist' %}?page={{ left_page }}">{{ left_page }}</a></li>
            {% endif %}
          {% endfor %}
          <li><a href="javascript:void(0);">...</a></li>
    {#       当前页码 #}
          <li class="active"><a href="{% url 'viewlist' %}?page={{ current_page }}">{{ current_page }}</a></li>
    {#       右边页码 #}
          {% for right_page in right_pages %}
            {% if right_page <= paginator.num_pages %}
              <li><a href="{% url 'viewlist' %}?page={{ right_page }}">{{ right_page }}</a></li>
            {% endif %}
          {% endfor %}
          <li><a href="javascript:void(0);">...</a></li>
    {#         最后一页#}
          {% if current_page < 98 %}
            <li><a href="{% url 'viewlist' %}?page={{ paginator.num_pages }}">{{ paginator.num_pages }}</a></li>
          {% endif %}
    
            {% if page_obj.has_next %}
              <li><a href="{% url 'viewlist' %}?page={{ page_obj.next_page_number }}">下一页</a></li>
            {% else %}
              <li class="disabled"><a href="javascript:void(0);">下一页</a></li>
            {% endif %}
    
    
          </ul>
        </nav>
    
    </body>
    </html>

    后台view视图

    from django.http import HttpResponse
    from django.shortcuts import render
    from django.views.generic import ListView
    from django.views.generic.base import TemplateView
    from .models import Article, User, Book
    from django.utils.timezone import now, localtime,make_aware
    from datetime import datetime
    from django.db.models import Count, Avg, F
    from django.db.models.manager import Manager
    from django.views import View
    
    class Index(View):
        def get(self, request):
            # info_list = []
            # for i in range(1000):
            #     info_list.append(Article(title='title-%s' % i,content='content-%s' % i))
            # Article.objects.bulk_create(info_list)
            return HttpResponse('ok')
    
    class ArticleListView(ListView):
        model = Article
        template_name = 'article_list_view.html'
        paginate_by = 10
        context_object_name = 'articles'
        ordering = 'id'
        page_kwarg = 'page'
    
        def get_context_data(self, *, object_list=None, **kwargs):
            context = super(ArticleListView, self).get_context_data(**kwargs)
            page_obj = context.get('page_obj')
            paginator = context.get('paginator')
            pagination_data = self.get_pagination_data(paginator, page_obj)
            context.update(pagination_data)
    
            return context
    
        def get_pagination_data(self,paginator,page_obj,around_count=2):
            current_page = page_obj.number
            left_page = range(current_page-around_count, current_page)
            right_page = range(current_page+1,current_page+around_count+1)
            return {
                'current_page':current_page,
                'left_pages': left_page,
                'right_pages': right_page
            }

    URLS内容

    from django.contrib import admin
    from django.urls import path
    from app01 import views
    urlpatterns = [
        # path('', views.index, name='index')
        # path('index/<book_id>/', views.Index.as_view(), name='index')
        path('', views.Index.as_view(), name='index'),
        path('viewlist/', views.ArticleListView.as_view(), name='viewlist'),
        # path('viewlist/<int:book_id>', views.ArticleListView.as_view(), name='viewlist'),
    ]
  • 相关阅读:
    366. Find Leaves of Binary Tree输出层数相同的叶子节点
    716. Max Stack实现一个最大stack
    515. Find Largest Value in Each Tree Row查找一行中的最大值
    364. Nested List Weight Sum II 大小反向的括号加权求和
    156. Binary Tree Upside Down反转二叉树
    698. Partition to K Equal Sum Subsets 数组分成和相同的k组
    244. Shortest Word Distance II 实现数组中的最短距离单词
    187. Repeated DNA Sequences重复的DNA子串序列
    java之hibernate之基于主键的双向一对一关联映射
    java之hibernate之基于主键的单向一对一关联映射
  • 原文地址:https://www.cnblogs.com/fengzi7314/p/10339980.html
Copyright © 2011-2022 走看看