Django实例_后台管理及分页器

原理步骤参考:

Django开发_14_后台管理及分页器-CSDN博客

一、创建Django项目

Django实例_后台管理及分页器_第1张图片

二、创建page_app

python manage.py startapp page_app

Django实例_后台管理及分页器_第2张图片

三、修改settings.py文件

(一)添加app

Django实例_后台管理及分页器_第3张图片

(二)设置每页显示数据个数

Django实例_后台管理及分页器_第4张图片

(三)设置中文显示

Django实例_后台管理及分页器_第5张图片

四、总路由添加子路由路径

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path("",include("page_app.urls",namespace="page"))
]

Django实例_后台管理及分页器_第6张图片

五、添加子路由文件

from django.urls import path

app_name = "page"
urlpatterns = [

]

Django实例_后台管理及分页器_第7张图片

六、models.py:创建模型

from django.db import models


class Student(models.Model):
    name = models.CharField(max_length=32, verbose_name="姓名")
    gender = models.CharField(max_length=2, verbose_name="性别")
    score = models.FloatField(verbose_name="成绩")

    def __str__(self):
        return self.name  # 添加实例化对象时以姓名显示

    class Meta:
        verbose_name = "学生"  # 后台管理显示中文:学生
        verbose_name_plural = verbose_name  # 用于后台管理复数形式不显示s

    @classmethod
    def get_list(cls, **kwargs):
        filters = {}
        return cls.objects.filter(**filters)  # 没有参数相当于cls.objects.all()

Django实例_后台管理及分页器_第8张图片

迁移模型:

manage.py makemigrations
python manage.py migrate

Django实例_后台管理及分页器_第9张图片

七、admin.py:注册模型

from django.contrib import admin

from page_app.models import Student


models = [
    Student
]

admin.site.register(models)

Django实例_后台管理及分页器_第10张图片

八、登录admin后台添加实例化模型

(一)创建超级账号

Django实例_后台管理及分页器_第11张图片

(二)启动运行

Django实例_后台管理及分页器_第12张图片

(三)登录添加学生

Django实例_后台管理及分页器_第13张图片Django实例_后台管理及分页器_第14张图片

九、views.py:编写视图函数

from django.shortcuts import render
from django.core.paginator import Paginator, InvalidPage

from Paginator.settings import PAGE_SIZE
from page_app.models import Student


def list_students_view(request):
    page_num = request.GET.get("page", 1)  # href中没有传递page时默认为1
    students = Student.get_list()
    paginator = Paginator(students, PAGE_SIZE)
    try:
        data = paginator.page(page_num)
    except InvalidPage:
        data = paginator.page(1)
    return render(request, "stu.html", locals())

Django实例_后台管理及分页器_第15张图片

十、urls.py:路由设置

from django.urls import path

from page_app.views import list_students_view

app_name = "page"
urlpatterns = [
    path("list/", list_students_view, name="list")
]

Django实例_后台管理及分页器_第16张图片

十一、html文件:上一页、下一页以及显示当前页/总页数




    
    分页



    {% for i in data %}
        
    {% endfor %}
    
学号 姓名 性别 成绩
{{ i.id }} {{ i.name }} {{ i.gender }} {{ i.score }}
{% if data.has_previous %} 上一页 {% else %} 上一页 {% endif %} {{ page_num }}/{{ paginator.num_pages }} {% if data.has_next %} 下一页 {% else %} 下一页 {% endif %}

Django实例_后台管理及分页器_第17张图片

Django实例_后台管理及分页器_第18张图片

十二、启动运行,效果展示

http://127.0.0.1:8000/list/

Django实例_后台管理及分页器_第19张图片

你可能感兴趣的:(django,python,后端)