外观
用户管理
使用说明
主界面
- 用户名称:即用户登录账号,唯一,字母+数字组成,默认长度4~30
- 用户昵称:建议填写用户的姓名,默认长度1~30
- 状态:停用,则用户无法登录。
编辑界面
- 归属部门:用户与部门是一对多关系。即一个用户只能属于一个部门,一个部门可以包含多个用户。
- 邮箱:如果有向用户发送邮件的需求,建议填写
- 岗位:用户与岗位是多对多关系
更多
- 重置密码:密码默认长度8~20位
- 分配角色:用户与角色是多对多关系
用户导入
- 下载模板后,填写用户信息
- 用户账号、用户昵称和账号状态,必填。其它可选
- 如果提示成功,则全部导入成功。
- 如果提示错误,则全部导入失败,不会出现部分导入情况。此时,查看日志,定位具体原因。
配置
用户密码、名称、昵称和密码长度,可以在配置文件中配置:mysite\mysite\settings.py
后端实现
目录
代码目录:mysite\myapp_system\user
sh
# 功能组件一般包含5个文件,后面文档不再重复罗列
user
|-- filters.py # 搜索过滤
|-- models.py # 模型
|-- serializers.py # 序列化器
|-- services.py # 工具函数和类
`-- views.py # 视图
模型
- 用户模型
SystemUsers
继承了BaseModel
和AbstractBaseUser
dept_id
定义了与部门一对多关系posts
定义了与岗位多对多关系roles
定义了与角色多对多关系
python
class SystemUsers(BaseModel, AbstractBaseUser):
id = models.BigAutoField(primary_key=True, db_comment="用户ID", help_text="用户ID")
username = models.CharField(
max_length=30, unique=True, db_comment="用户账号", help_text="用户账号"
)
# ...
SystemUserPost
,是用户与岗位的多对多关系中间表SystemUserRole
,是用户与角色的多对多关系中间表
视图
- 用户视图
UserViewSet
继承了CustomModelViewSet
视图集 - 用户视图开启了数据权限(关于数据权限详细说明)
- 字段
id
,基于用户过滤数据 - 字段
dept_id
,基于部门过滤数据
- 字段
sh
@extend_schema(tags=["管理后台-system-用户"])
class UserViewSet(CustomModelViewSet):
queryset = SystemUsers.objects.all()
serializer_class = UserSerializer
filterset_class = UsersFilter
# ...
# 开启数据权限
data_permissions = {"dept_column": "dept_id", "user_column": "id"}
# ...
前端实现
目录
- 代码目录:src\views\system\user
sh
user/
|-- DeptTree.vue # 主界面左侧部门列表
|-- UserAssignRoleForm.vue # 分配角色界面
|-- UserForm.vue # 编辑界面
|-- UserImportForm.vue # 用户导入界面
`-- index.vue # 主界面