Django框架之views(业务逻辑)简单后台首页展示的业务逻辑详细描述

xiaoxiao2021-02-28  124

from django.shortcuts import render,HttpResponse,HttpResponseRedirect import models from django.db.models import Q # 模糊查询使用的对象 from django.core.paginator import Paginator,InvalidPage,EmptyPage,PageNotAnInteger # 分页使用的类和异常处理的包 from django.contrib import auth # 登录,退出,验证使用的包 from django.contrib.auth.decorators import login_required # 防止未登录就直接访问后台页面使用的包 from django.contrib.auth.models import User # 引入用户表 from django.contrib.auth.hashers import make_password # 密码加密使用的包 import os import uuid # 生成唯一标识符 # 显示数据库内容业务逻辑函数 @login_required # 防止未登录而直接访问后台页面 def manage(request): stus = models.Student.objects.all() # 获取数据库所有行的数据 # 根据搜索框的name获取到, search = request.GET.get('search', None) # 获取搜索框的name order = request.GET.get('order', None) # 通过什么字段来排序 rule = request.GET.get('rule', None) # 排序方式 pn = request.GET.get('pn',1) # 分页使用变量 # GET方式获取,来处理搜索功能 try: if search is not None: # 一个Q就是一个条件,然后用并集操作符连接 condition = Q(name__icontains=search) | Q(score__icontains=search) | Q(age__icontains=search) | Q( email__icontains=search) | Q(cls__name__icontains=search) stus = models.Student.objects.filter(condition) else: # 没有搜索条件就默认显示所有 stus = models.Student.objects.all() except Exception as e: print e # 排序规则的业务逻辑部分 if order: if rule == 'u': # 升序排序 stus = stus.order_by(order) else: # 降序排序 stus = stus.order_by(order).reverse() # 分页规则的业务逻辑部分 # 分页返回的值是unicode转成int try: pn = int(pn) except Exception as e: pn = 1 # 从客户端浏览器中读取每页显示记录条数的cookie值,如果没有输入则默认为5 per_page = request.COOKIES.get('per_page',5) # 分页功能处理 try: paginator = Paginator(stus,per_page) # 返回一个分页对象,p1:queryset,p2:每页记录条数 stus = paginator.page(pn) # 获取某一页的记录 except(InvalidPage,EmptyPage,PageNotAnInteger) as e: pn = 1 stus = paginator.page(pn) # 获取某一页的记录 print e num_pages = stus.paginator.num_pages # 获取总页数 if num_pages<5: # 如果最大页数小于你想要显示的数字 start = 1 end = num_pages+1 else: if pn <= 2: # 页数左边界 start = 1 end = 6 elif pn>=num_pages-2: # 页数右边界 start = num_pages-4 end = num_pages + 1 else: # 页数不触及边界的情况 start = pn-2 end = pn+3 # 分页数字生成 page_nums = range(start,end) # 返回响应 return render(request,'pro01/manage.html',{'stus':stus,'index':'active','page_nums':page_nums})

注意:以上内容是个人使用的随手记录, 就是介绍了下简单的使用

欢迎大家来吐槽,准备好瓜子饮料矿泉水,开整!!!

---------------------------------------------------------------------------------------

搞笑:能动手就尽量别吵吵

转载请注明原文地址: https://www.6miu.com/read-25234.html

最新回复(0)