---
# System prepended metadata

title: 程式碼學習 drf

---

# 程式碼學習 drf 

### drf_admin 程式碼
https://github.com/TianPangJi/drf_admin
介紹文檔：https://blog.csdn.net/Mr_w_ang/article/details/111303774

系统功能
* JWT鉴权
* RBAC权限验证
* Swagger接口文档
* WebSocket
* 后台日志log
* 系统管理
    * 用户管理
    * 角色管理
    * 权限管理
    * 部门管理
    * 任务调度(Cron任务)
* 系统监控
    * 在线用户
    * IP黑名单
    * crud日志
    * 错误日志
    * 服务监控
    * 主要应用技术
    * Django
    * Django Rest Framework
    * APScheduler
    * drf-yasg
    * channels
    * redis
应用技术
* Django
* Django Rest Framework
* APScheduler
* drf-yasg
* channels
* redis
### 实现过程
#### 流程图
![](https://i.imgur.com/mCdenyf.png)
说明

* 前端请求登录，成功后端返回Token值，否则后端返回400
* 前端请求获取当前用户信息，成功后根据当前用户信息中的权限信息，进行判断路由及按钮权限判断
* 前端请求其他接口，后端先验证登录状态（失败则返回401），再验证用户权限（失败则返回403）
* 通过验证后请求进入Django视图

#### 权限流程图
![](https://i.imgur.com/sWuWvcR.png)
说明

* 根据需求，创建不同角色，例如：admin、visitor
* 依据角色，给不同的**角色**分配不同的权限
* 根据用户的岗位及职责分配角色，使不同**用户**具有不同的权限
* 用户请求后端接口时，验证用户权限，通过则放行，否则返回403
* 操作数据库

#### 数据库表设计

Users用户表
Roles角色表
Permissions权限表
Users-Roles(用户角色关联表)
Roles-Permissions(角色权限关联表)
![](https://i.imgur.com/cuxHOau.png)

### django-vue-admin 程式碼
基于RBAC模型权限控制的中小型应用的基础开发平台,前后端分离,后端采用django+django-rest-framework,前端采用vue+ElementUI,移动端采用uniapp+uView(可发布h5和小程序).

學習筆記：https://hackmd.io/BmvaBJ0SRF-FKn6VRu5Sow
https://github.com/caoqianming/django-vue-admin



文章（要付費）
https://python.plainenglish.io/role-based-authentication-and-authorization-with-djangorestframework-and-simplejwt-d9614d79995c



相關套件：
https://pypi.org/project/rest-framework-roles/


相關教學影片：
https://www.youtube.com/watch?v=soxd_xdHR0o&list=PLOLrQ9Pn6caw0PjVwymNc64NkUNbZlhFw&ab_channel=VeryAcademy