django_project_demo/app/views/admin.py

124 lines
4.0 KiB
Python
Raw Permalink Normal View History

2024-08-24 11:25:23 +08:00
"""
管理员帐户管理视图函数
功能实现管理员的增删改查
"""
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})