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

原理步骤参考:

Django开发_14_后台管理及分页器-优快云博客

一、创建Django项目

二、创建page_app

python manage.py startapp page_app

三、修改settings.py文件

(一)添加app

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

(三)设置中文显示

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

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

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

五、添加子路由文件

from django.urls import path

app_name = "page"
urlpatterns = [

]

六、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()

迁移模型:

manage.py makemigrations
python manage.py migrate

七、admin.py:注册模型

from django.contrib import admin

from page_app.models import Student


models = [
    Student
]

admin.site.register(models)

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

(一)创建超级账号

(二)启动运行

(三)登录添加学生

九、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())

十、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")
]

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分页</title>
</head>
<body>
<table>
    <thead>
    <tr>
        <th>学号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>成绩</th>
    </tr>
    </thead>
    <tbody>
    {% for i in data %}
        <tr>
        <td>{{ i.id }}</td>
        <td>{{ i.name }}</td>
        <td>{{ i.gender }}</td>
        <td>{{ i.score }}</td>
        </tr>
    {% endfor %}
    </tbody>
</table>
<center>
    {% if data.has_previous %}
        <a href="{% url 'page:list' %}?page={{ data.previous_page_number }}">上一页</a>
    {% else %}
        <a href="">上一页</a>
    {% endif %}
    {{ page_num }}/{{ paginator.num_pages }}
    {% if data.has_next %}
        <a href="{% url 'page:list' %}?page={{ data.next_page_number }}">下一页</a>
    {% else %}
        <a href="">下一页</a>
    {% endif %}

</center>
</body>
</html>

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

http://127.0.0.1:8000/list/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值