第一部分:models.py 实体对象定义
from django.db import models
# Create your models here.
class Book(models.Model):
id = models.BigAutoField(primary_key=True)
name = models.CharField(max_length=255, null=True)
cover = models.CharField(max_length=255)
author = models.CharField(max_length=255)
price = models.DecimalField(decimal_places=2, max_digits=100000)
is_delete = models.IntegerField()
class Meta:
managed = False
db_table = 'book'
第二部分:views.py 视图层业务逻辑编写
import json
from userSystem.models import Book
from django.http import HttpResponse
from django.core import serializers
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
# Create your views here.
def select(request):
books = Book.objects.all()
for i in range(len(books)):
print("主键:%s 值:%s" % (i + 1, books[i]))
return response_success(message='后台响应成功', data_list=serializers.serialize("json", books))
def selectPage(request):
# 当前页码
page = request.GET.get('page')
# 当前分页大小
page_size = request.GET.get('pageSize')
book_list = Book.objects.all()
# django 分页实体对象
paginator = Paginator(book_list, page_size)
# 查询总记录数
total = paginator.count
try:
# 执行分页查询
books = paginator.page(page)
except PageNotAnInteger:
# 执行分页查询,默认指定页码
books = paginator.page(1)
except EmptyPage:
# 执行分页查询,默认指定页码
books = paginator.page(paginator.num_pages)
return response_page_success(message='后台响应成功', data_list=serializers.serialize("json", books), total=total, page=page, pageSize=page_size)
# 查询普通对象结果集封装
def response_success(message, data=None, data_list=[]):
return HttpResponse(json.dumps({
'code': 200,#code由前后端配合指定
'message': message,#提示信息
'data': data,#返回单个对象
'dataList': data_list#返回对象数组
}, ensure_ascii=False), 'application/json')
# 查询分页对象结果集封装
def response_page_success(message, data=None, data_list=[], total=None, page=None, pageSize=None):
return HttpResponse(json.dumps({
'code': 200,#code由前后端配合指定
'message': message,#提示信息
'data': data,#返回单个对象
'dataList': data_list,#返回对象数组
'total':total,#记录总数
'page':page,#当前页面
'pageSize':pageSize#当前页面分页大小
}, ensure_ascii=False), 'application/json')
第三部分:urls.py 请求映射
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^select/', views.select),
url(r'^selectPage/', views.selectPage)
]
重新启动项目:python manage.py runserver
访问分页接口:http://127.0.0.1:8000/selectPage/?page=1&pageSize=1
http://127.0.0.1:8000/selectPage/?page=1&pageSize=10