""" 管理员帐户管理视图函数 功能:实现管理员的增删改查 """ from django.shortcuts import render, redirect from app.models import Admin # 数据表类 from app.utils.form import AdminForm, AdminEditForm, AdminResetForm from app.utils.pagination import Pagination from app.utils.encrypt import md5 def admin_list(request): """ 部门列表 """ # 第一次显示的时候,查询条件也就是data_dict为空,所以查询所有数据 data_dict = {} search_data = request.GET.get('searchMobile', '') if search_data: data_dict['username__contains'] = search_data queryset = Admin.objects.filter(**data_dict) page_object = Pagination(request, queryset, PAGE_SIZE=10) # 实例化分页导航条类,每页显示10条记录 page_queryset = page_object.page_queryset # 获得分完页的数据结果 # 生成分页导航条 page_nav = page_object.html() context = { 'queryset': page_queryset, # 分完页的数据结果 'page_nav': page_nav, # 生成的页码导航条 'search_data': search_data, # 把查询值再返回给前端 } return render(request, 'admin_list.html', context) def admin_add(request): """ 添加管理员 """ title = '新建管理员帐户' if request.method == 'GET': form = AdminForm() return render(request, 'change.html', {'form': form, 'title': title}) # POST请求 form = AdminForm(data=request.POST) # 拿到所有提交过来的数据 if form.is_valid(): print(form.cleaned_data) # 验证通过后,所有数据都在form.cleaned_data form.save() return redirect('/admin/list') else: return render(request, 'change.html', {'form': form, 'title': title}) def admin_edit(request, nid): """ 管理员帐户修改 nid 用于接收前端传递过来的id,他的名字要和urls.py文件中定义的一样 """ # 查询是否存在nid的帐户返回 对象/None row_data = Admin.objects.filter(id=nid).first() if not row_data: url = '/admin/list' return render(request, 'error.html', {'msg': '数据不存在', 'url': url}) title = '编辑管理员帐户' if request.method == 'GET': form = AdminEditForm(instance=row_data) # 将查询到的对象传递给form return render(request, 'change.html', {'form': form, 'title': title}) # return render(request,'change.html',{'title':title}) # POST请求 form = AdminEditForm(data=request.POST, instance=row_data) # 拿到所有提交过来的数据 if form.is_valid(): # 数据校验 form.save() # 向 model = UserInfo 定义的表保存数据 return redirect('/admin/list/') else: # form中带了POST过来的请求 return render(request, 'change.html', {'form': form, 'title': title}) def admin_delete(request, nid): """ 管理员帐户删除 nid 用于接收前端传递过来的id,他的名字要和urls.py文件中定义的一样 """ Admin.objects.filter(id=nid).delete() return redirect('/admin/list/') def admin_reset_password(request, nid): """ 重置管理员密码 """ # 方式1,直接修改为0000 # Admin.objects.filter(id=nid).update(password=md5('0000')) # return redirect('/admin/list/') # 方式2,通过表单输入重置 row_data = Admin.objects.filter(id=nid).first() if not row_data: return redirect('/admin/list/') title = f'重置密码-{row_data.username}' if request.method == 'GET': form = AdminResetForm() return render(request, 'change.html', {'form': form, 'title': title}) # POST form = AdminResetForm(data=request.POST, instance=row_data) # 拿到所有提交过来的数据 if form.is_valid(): # 数据校验 form.save() # 向 model = UserInfo 定义的表保存数据 return redirect('/admin/list/') else: # form中带了POST过来的请求 return render(request, 'change.html', {'form': form, 'title': title})