Django框架之views(业务逻辑)简单后台上传头像,添加信息,修改信息,删除信息业务逻辑详细描述

xiaoxiao2021-02-28  106

# 上传头像业务逻辑函数,封装函数,代码复用 def upload(request,file): if file.size/1024/1024 < 2: # 判断文件上传大小 if file.content_type == 'image/jpeg' or file.content_type == 'image/gif': # 判断文件类型指定是这两种格式 # 把文件存到服务器上 # 按照文件名的.进行分割,然后取最后一项后缀名与唯一标识符(uuid)拼接成文件名 new_name = str(uuid.uuid4())+'.'+file.name.split('.')[-1] fname = 'upload/avatar/' + new_name # 文件路径加文件名字 dirname = os.path.dirname(fname) # 获取路径名称 if not os.path.exists(dirname): # 如果路径不存在则创建 os.makedirs(dirname) # 创建多级目录 with open(fname,'wb') as f: if file.multiple_chunks(): # 判断是否是多块文件 for chunk in file.chunks(): # 遍历文件的所有块 f.write(chunk) # 写入多块文件 else: f.write(file.read()) # 写入单块文件 return True,new_name # 上传成功返回True 和 文件的新名字 else: return False,'文件类型只能是jpeg或者gif' # 返回上传不成功和错误信息和 else: return False,'上传文件不能超过2M' # 返回上传不成功,并提示错误信息 # 添加学生页业务逻辑 def add_stu(request): clsall = models.Clases.objects.all() # 获取所有班级数据 # 获取输入框的值 if request.method == 'POST': name = request.POST.get('stu_name',None) age = request.POST.get('age',None) gender = request.POST.get('gender',None) score = request.POST.get('score',None) email = request.POST.get('email',None) # 获取班级id cid = request.POST.get('clases', None) # 上传头像业务逻辑部分 avatar = request.FILES.get('avatar', None) # 获取上传头像的输入框 # 准备上传 if avatar is not None: # 判断如果不为空 res = upload(request, avatar) # 调用自己写的上传函数 if res[0] is False: # 如果上传失败返回错误信息 return render(request,'pro01/upd_stu.html',{'error':res[1],'clsall':clsall}) else: # 上传成功 new_name = res[1] # 获取返回的文件名字 stu_info = { 'name':name, 'age':age, 'score':score, 'gender':gender, 'email':email, 'cls_id':cid, 'avatar':'avatar/' + new_name } # 将获取到的数据框的值修改后插入数据库 models.Student.objects.create(**stu_info) # 响应的页面 return HttpResponseRedirect('/pro01/') else: # 获取所有班级 clases = models.Clases.objects.all() # 添加选中的clases return render(request,'pro01/add_stu.html',{'add_stu':'active','clases':clases}) # 修改学生信息业务逻辑 def upd_stu(request): stu_id = request.GET.get('sid',None) # 获取点击修改链接的id clsall = models.Clases.objects.all() # 获取班级的所有数据 # 显示页面必须得先使用一次get方法 if request.method == 'GET': row = models.Student.objects.get(pk=stu_id) # 获取当前对应id的一行数据 # 响应显示所有对应id的数据 return render(request,'pro01/upd_stu.html',{'row':row,'clsall':clsall}) elif request.method == 'POST': name = request.POST.get('stu_name', None) age = request.POST.get('age', None) gender = request.POST.get('gender', None) score = request.POST.get('score', None) email = request.POST.get('email', None) # 获取班级id cls_id = request.POST.get('clases', None) # 上传头像业务逻辑部分 avatar = request.FILES.get('avatar', None) # 获取上传头像的输入框 print avatar # print avatar.content_type # 准备上传 if avatar is not None: # 判断如果不为空 res = upload(request, avatar) # 调用自己写的上传函数 if res[0] is False: # 如果上传失败返回错误信息 return render(request, 'pro01/upd_stu.html', {'error': res[1],'clsall':clsall}) else: # 上传成功 new_name = res[1] # 获取返回的文件名字 context = { 'name':name, 'age' : age, 'gender':gender, 'score':score, 'email':email, 'cls_id':cls_id, 'avatar':'avatar/'+new_name # 修改的时候把头像地址存入数据库 } models.Student.objects.filter(pk=stu_id).update(**context) return HttpResponseRedirect('/pro01/') else: return HttpResponse('fuck') # 删除学生信息业务逻辑 def del_stu(request): stu_id = request.GET.get('sid',None) models.Student.objects.filter(pk = stu_id).delete() return HttpResponseRedirect('/pro01/')

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

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

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

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

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

最新回复(0)