学生管理
数据库
先在数据库中创建一张学生信息表

Student 实体类定义
在/model的包下创建一个student.py
1 | # -*- coding:utf-8 -*- |
学生登录
前端-登录页面
学生登录和 admin 的登录,我们复用同一个前端页面和后端接口,所以需要加一个role用以区分是 admin 登录了还是普通的 student 登录了;同时,不同用户进入页面之后。看到的内容应该是不同的。
1 | <template> |

后端-管理员/学生登录的 api 接口
管理员和学生的登录复用同一个 api 接口
所以需要修改一下之前的登录逻辑
Account
在/model下创建一个account.py,接收前端传递来的账号、密码、角色
1 | # -*- coding:utf-8 -*- |
Student
给 student 表追加role字段

给/model/student.py更新一下
1 | # -*- coding:utf-8 -*- |
Admin
给 admin 表追加name字段和role字段

给/model/admin.py更新一下
1 | # -*- coding:utf-8 -*- |
Service
在项目目录/service下创建一个studentService.py
1 | # -*- coding:utf-8 -*- |
然后修改adminService.py
1 | # -*- coding:utf-8 -*- |
Role
创建一个枚举类 Role,用以区分学生和管理员
在/common下创建一个Enum.py
1 | # -*- coding:utf-8 -*- |
API
然后修改一下登录的 api
1 | # -*- coding:utf-8 -*- |
学生注册
前端-注册页面
写一下学生的注册页面,这里管理员就不参与注册了
在前端项目目录/views下创建一个Register.vue(这里我偷懒了,没有替换注册页的背景图,大家可以自行替换)
1 | <template> |
添加一下注册页面的路由
1 | import { createRouter, createWebHistory } from "vue-router"; |

后端-注册的 api 接口
接下来实现一下,后端注册的逻辑
API
因为这个注册只是给学生使用的,在项目目录/api下新建一个studentApi.py
1 | # -*- coding:utf-8 -*- |
添加一下 studentApi
1 | # -*- coding:utf-8 -*- |
给account.py添加注册的请求体
1 | # -*- coding:utf-8 -*- |
Service
实现一下注册的 service
1 | # -*- coding:utf-8 -*- |
添加自定义异常
1 | # -*- coding:utf-8 -*- |
1 | # -*- coding:utf-8 -*- |
登录/注册测试
现在测试一下学生登录和注册的逻辑
学生注册



学生登录


现在登录进来了,但是右上角的显示不太对,等下改改
管理员登录


学生管理
这块咱们做个设定,当管理员新增用户、替用户修改用户数据,密码必须重新设置为初始密码-123456
前端
复制粘贴一下之前的Course.vue,命名为Student.vue
1 | <template> |
1 | import { createRouter, createWebHistory } from "vue-router"; |
1 | <template> |
后端
直接一次性实现学生管理的增删查改
1 | # -*- coding:utf-8 -*- |
1 | # -*- coding:utf-8 -*- |
1 | # -*- coding:utf-8 -*- |
测试
增






删


查


改


但是修改过后,密码会被强制重置为 123456
限制权限
现在不管普通的学生还是管理员都能看到管理页面 这不符合
需要加入一个权限v-if="user.role === 'ADMIN'"
顺便修改一下右上角和主页显示的用户名称
1 | <template> |
1 | <template> |
普通学生登录

管理员登录


更新: 2024-05-20 00:11:43
原文: https://www.yuque.com/zacharyblock/iacda/uuigf300461wndud