115 lines
3.9 KiB
Python
115 lines
3.9 KiB
Python
"""
|
||
用户管理视图函数
|
||
功能:实现用户的增删改查
|
||
"""
|
||
from django.shortcuts import render, redirect
|
||
from app.models import Department, UserInfo, PrettyNumber # 数据表类
|
||
|
||
from app.utils.form import UserModelForm # 表单ModelForm类
|
||
|
||
from app.utils.pagination import Pagination # 导入分页导航条
|
||
|
||
|
||
def user_list(request):
|
||
"""
|
||
用户列表
|
||
"""
|
||
queryset = UserInfo.objects.all()
|
||
|
||
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 # 生成的页码导航条
|
||
}
|
||
return render(request, 'user_list.html', context)
|
||
|
||
|
||
def user_add(request):
|
||
"""
|
||
添加用户 (原始实现方式)
|
||
缺点:
|
||
1.要重复前端form表单
|
||
2.用户提交数据未校验
|
||
3.前端输入错误没有提示
|
||
4.关联的数据要手动获取,前端要循环渲染
|
||
"""
|
||
if request.method == 'GET':
|
||
content = {
|
||
'gender': UserInfo.gender_choices,
|
||
'depart': Department.objects.all()
|
||
}
|
||
|
||
return render(request, 'user_add.html', content)
|
||
|
||
name = request.POST.get('name')
|
||
password = request.POST.get('password')
|
||
age = request.POST.get('age')
|
||
account = request.POST.get('account')
|
||
create_time = request.POST.get('create_time')
|
||
depart_id = request.POST.get('depart')
|
||
gender = request.POST.get('gender')
|
||
|
||
UserInfo.objects.create(name=name, password=password, age=age,
|
||
account=account, create_time=create_time,
|
||
depart_id=depart_id, gender=gender)
|
||
return redirect('/user/list')
|
||
|
||
|
||
def user_add_modelform(request):
|
||
"""
|
||
添加用户(通过Django ModelForm组件实现 最简便)
|
||
"""
|
||
if request.method == 'GET':
|
||
form = UserModelForm() # 实例化类
|
||
return render(request, 'user_add_modelform.html', {'form': form})
|
||
|
||
# POST请求
|
||
form = UserModelForm(data=request.POST) # 拿到所有提交过来的数据
|
||
if form.is_valid(): # 数据校验
|
||
|
||
# 如果你想对数据表中的字段另外再传递值来保存,就用
|
||
# form.instance.字段名 = '值'
|
||
form.instance.password = '0000' # 默认密码是0000
|
||
|
||
form.save() # 向 model = UserInfo 定义的表保存数据
|
||
return redirect('/user/list/')
|
||
else:
|
||
# form中带了POST过来的请求
|
||
return render(request, 'user_add_modelform.html', {'form': form})
|
||
|
||
|
||
def user_edit_modelform(request, nid):
|
||
"""
|
||
用户信息修改
|
||
nid 用于接收前端传递过来的id,他的名字要和urls.py文件中定义的一样
|
||
"""
|
||
# 1.先查询到该条记录
|
||
# 2.拿到POST请求过来的数据(data=request.POST),将将查询到数据对象传递给form(instance=row_data)
|
||
row_data = UserInfo.objects.filter(id=nid).first()
|
||
|
||
if request.method == 'GET':
|
||
form = UserModelForm(instance=row_data) # 将查询到的对象传递给form
|
||
return render(request, 'user_edit_modelform.html', {'form': form})
|
||
|
||
# POST请求
|
||
form = UserModelForm(data=request.POST, instance=row_data) # 拿到所有提交过来的数据
|
||
if form.is_valid(): # 数据校验
|
||
form.save() # 向 model = UserInfo 定义的表保存数据
|
||
return redirect('/user/list/')
|
||
else:
|
||
# form中带了POST过来的请求
|
||
return render(request, 'user_edit_modelform.html', {'form': form})
|
||
|
||
|
||
def user_delete_modelform(request, nid):
|
||
"""
|
||
用户信息删除
|
||
nid 用于接收前端传递过来的id,他的名字要和urls.py文件中定义的一样
|
||
"""
|
||
UserInfo.objects.filter(id=nid).delete()
|
||
return redirect('/user/list/')
|