Django实现分页查看数据表

626 阅读1分钟

1.配置数据库

# models.py

# Create your models here.
from django.db import models
from datetime import datetime

# Create your models here.
class Users(models.Model):
     #id = models.AutoField(primary_key=True) #主键可省略不写
     name = models.CharField(max_length=32)
     age = models.IntegerField(default=20)
     phone = models.CharField(max_length=16)
     addtime=models.DateTimeField(default=datetime.now)

class Meta:
   db_table = "myapp_users"  # 指定表名

指定有一张表名为 myapp_users

image.png

2.视图与模板

views.py

from django.shortcuts import render
from django.core.paginator import Paginator
from .models import Users

def database_show(request,Pindex = 1):
    kw = request.GET.get('keyword',None)
    mywhere = ''
    if kw is not None:
        ob = Users.objects.filter(name__contains=kw)
        mywhere = '?keyword=' + str(kw)
    else:
        ob = Users.objects.all()
    p = Paginator(ob,5)
    page1 = p.page(Pindex)
    pages = range(1,p.num_pages+1)
    max_page = p.num_pages
    context = {"dlist":page1,"Pindex":Pindex,"pages":pages,"max_page":max_page,"keyword":kw,"mywhere":mywhere}
    return render(request,'myapp/database_show.html',context)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>展示数据</title>
</head>
<style>
    h2{
        text-align: center;
    }
    table{
        margin: 20px auto;
        height: 300px;
        width: 500px;
        border-collapse:collapse;
    }
    table,th, td
    {
        text-align:center;
        border: 1px solid black;
    }
    div{
        text-align: center;
    }
    form{
        text-align: center;
    }
</style>
<body>
    <div><a href="{% url 'index' %}">返回首页</a></div>
    <h2>展示数据</h2>
    <hr>
    <form action="{% url 'database_show' 1 %}" method="get">
        <input type="text" name="keyword">
        <input type="submit" value="搜索">
    </form>
    <table>
        <tr>
            <td>编号</td>
            <td>名字</td>
            <td>年龄</td>
            <td>电话</td>
            <td>添加时间</td>
        </tr>
        {% for list in dlist %}
        <tr>
            <td>{{ list.id }}</td>
            <td>{{ list.name }}</td>
            <td>{{ list.age }}</td>
            <td>{{ list.phone }}</td>
            <td>{{ list.addtime }}</td>
        </tr>
        {% endfor %}
    </table>
    <div style="margin-bottom: 30px">
        {% for page in pages %}
            &nbsp;&nbsp;<a href="{% url 'database_show' page %}{{ mywhere }}">{{ page }}</a>&nbsp;&nbsp;
        {% endfor %}
    </div>

    <div>
        {% if Pindex > 1 and Pindex < max_page %}
            <a href="{% url 'database_show' Pindex|add:-1 %}{{ mywhere }}"><button>上一页</button></a>
            <a href="{% url 'database_show' Pindex|add:1 %}{{ mywhere }}"><button>下一页</button></a>
        {% elif Pindex == 1 and max_page != 1 %}
            <button disabled="disabled">上一页</button>
            <a href="{% url 'database_show' Pindex|add:1 %}{{ mywhere }}"><button>下一页</button></a>
        {% elif Pindex == max_page and max_page != 1 %}
            <a href="{% url 'database_show' Pindex|add:-1 %}{{ mywhere }}"><button>上一页</button></a>
            <button disabled="disabled">下一页</button>
        {% elif Pindex == 1 and max_page == 1 %}
            <button disabled="disabled">上一页</button>
            <button disabled="disabled">下一页</button>
        {% endif %}
    </div>

</body>
</html>