Django 权限管理进阶:为函数视图添加角色权限控制
在上一节中,我们已经为**基于类的视图(CBV)**实现了一套完整的角色权限控制方案:
- 通过
AccessMixin - 统一在
dispatch()中校验登录状态和角色权限 - 只需要配置
allowed_roles即可完成权限限制
但在实际项目中,你很快就会遇到一个问题:
并不是所有视图,都是“类视图”。
1.问题场景:函数视图如何做权限控制?
以「学生管理」模块为例。
在 views.py 中你会发现,除了 CRUD 这些类视图之外,还有两类典型的函数视图:
- 📥 导入学生(import)
- 📤 导出学生(export)
例如:
def export_excel(request):
...
def upload_student(request):
...
这类视图 无法继承 RoleRequiredMixin,也就无法使用我们上一节封装的权限逻辑。
那么问题来了:
函数视图,如何复用同一套角色权限规则?
答案很明确: 👉 使用装饰器(Decorator)
2.为什么装饰器非常适合函数视图?
装饰器的特点非常适合当前场景:
- 不侵入原有业务逻辑
- 可以复用
- 语义清晰
- 写一次,用多次
而且在 Django 中:
- CBV →
Mixin - FBV →
Decorator
这是一个非常经典、也非常推荐的组合方式。
3.实现角色权限装饰器
继续阅读完整内容
以上为免费预览。前往「Django + Vue 全栈课程」,查看后续完整讲解、案例演示和配套资料。
查看课程详情