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