跳到主要内容

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 全栈课程」,查看后续完整讲解、案例演示和配套资料。

查看课程详情