django_project_demo/app/views/admin.py
2024-08-24 03:25:23 +00:00

124 lines
4.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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