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

115 lines
3.9 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 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将将查询到数据对象传递给forminstance=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/')