124 lines
4.0 KiB
Python
124 lines
4.0 KiB
Python
|
"""
|
|||
|
管理员帐户管理视图函数
|
|||
|
功能:实现管理员的增删改查
|
|||
|
"""
|
|||
|
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})
|