Skip to content

用户管理

使用说明

主界面

  • 用户名称:即用户登录账号,唯一,字母+数字组成,默认长度4~30
  • 用户昵称:建议填写用户的姓名,默认长度1~30
  • 状态:停用,则用户无法登录。

image-20250617084245546

编辑界面

  • 归属部门:用户与部门是一对多关系。即一个用户只能属于一个部门,一个部门可以包含多个用户。
  • 邮箱:如果有向用户发送邮件的需求,建议填写
  • 岗位:用户与岗位是多对多关系

image-20250617091055822

更多

  • 重置密码:密码默认长度8~20位
  • 分配角色:用户与角色是多对多关系

image-20250617092122805

用户导入

  • 下载模板后,填写用户信息

image-20250617100516342

  • 用户账号、用户昵称和账号状态,必填。其它可选

image-20250617110858273

  • 如果提示成功,则全部导入成功。
  • 如果提示错误,则全部导入失败,不会出现部分导入情况。此时,查看日志,定位具体原因。

配置

用户密码、名称、昵称和密码长度,可以在配置文件中配置:mysite\mysite\settings.py

image-20250617100741356

后端实现

目录

代码目录:mysite\myapp_system\user

sh
# 功能组件一般包含5个文件,后面文档不再重复罗列
user
|-- filters.py # 搜索过滤
|-- models.py # 模型
|-- serializers.py # 序列化器
|-- services.py # 工具函数和类
`-- views.py # 视图

模型

  • 用户模型SystemUsers继承了BaseModelAbstractBaseUser
    • 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 # 主界面