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

# 上传头像业务逻辑函数,封装函数,代码复用
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/')

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

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

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

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值