Django框架之views(业务逻辑)简单后台首页展示的业务逻辑详细描述
2017-08-05 14:09
537 查看
此代码需要与前端代码配合使用...全能小王子啊!!!
但是因为前端代码过多,我就不放这里展示了,我看着头都大....
废话不多说,直接上代码,出自本人笔记,仅供参考,若觉得没有参考价值,请自寻更好学习方案!!!
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.o
4000
bjects.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})
但是因为前端代码过多,我就不放这里展示了,我看着头都大....
废话不多说,直接上代码,出自本人笔记,仅供参考,若觉得没有参考价值,请自寻更好学习方案!!!
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.o
4000
bjects.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})
相关文章推荐
- Django框架之views(业务逻辑)简单后台登录与退出的业务逻辑详细描述
- Django框架之views(业务逻辑)简单后台注册业务逻辑详细描述
- Django框架之views(业务逻辑)简单后台设置cookie,session信息业务逻辑详细描述
- 框架 day81 涛涛商城项目-实现首页搜索功能,商品详情,描述,规格展示
- 爬虫 scrapy 框架学习 1. Scrapy框架业务逻辑的理解 + 简单爬虫案例示范
- django项目简单搭建(不包含书写业务逻辑)
- 第三百零四节,Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器
- 第三百零五节,Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性
- 后台管理框架之七 :业务逻辑设计
- 局域网聊天系统__5.客户端业务逻辑与框架
- 如何避免在简单业务逻辑上面的细节上面出错
- 使用Django快速搭建简单的数据管理后台
- Redis实现微博后台业务逻辑系列(四)
- django 将后台表数据展示在前台html页面中
- 循序渐进Python3(十二) --2-- web框架之django简单实现oracle数据库操作
- django学习教程(二)理解django框架的逻辑结构,创建第一个app
- Drools业务逻辑框架
- 小程序图片上传,后台使用Servlet上传业务逻辑
- 后台首页品字形(frameset)框架搭建
- Django 框架之视图函数(Views)