如何在 django rest 框架中添加自定义权限和角色

Posted

技术标签:

【中文标题】如何在 django rest 框架中添加自定义权限和角色【英文标题】:how to add custom permissions and role based in django rest framework 【发布时间】:2021-11-01 20:23:27 【问题描述】:

    models.py =============== 来自 django.contrib.auth.models 从 django.db 导入 AbstractUser 导入模型

       # Create your models here. class User(AbstractUser):    username = models.CharField(max_length=10, unique=True)   
    

    is_superuser = models.BooleanField(default=False) is_staff = models.BooleanField(default=False) is_admin = models.BooleanField(default=False) is_teacher = models.BooleanField(default=False) is_student = models.BooleanField(default=False)

       class Admin(models.Model):    user = models.OneToOneField(User, on_delete=models.CASCADE,
    

    related_name="admin_account")

       def __str__(self):
       return self.user.username
    
       class Teacher(models.Model):    user = models.OneToOneField(User, on_delete=models.CASCADE,
    

    related_name="teacher_account") def str(自我): 返回 self.user.username

       class Student(models.Model):    user = models.OneToOneField(User, on_delete=models.CASCADE,
    

    related_name="student_account") def str(自我): 返回 self.user.username

【问题讨论】:

看看这个DRF permissions 【参考方案1】:

在有学生和老师之前,我做过一些非常相似的事情,但对我来说,我所做的是让学生和老师模型继承自 User 类。 考虑到这一点,我的权限类看起来像这样:

class IsStudent(permissions.BasePermission):
    def has_permission(self, request, view):
        return request.user.student and request.user.is_authenticated

【讨论】:

以上是关于如何在 django rest 框架中添加自定义权限和角色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django rest 框架中反转 ViewSet 自定义操作的 URL

Django Rest Framework - 如何在 ModelSerializer 中添加自定义字段

如何在 django rest 框架中定义列表字段?

Django Rest 框架中的自定义用户模型注册

Django rest框架中的自定义kwarg

django rest 框架序列化程序中的关系数据库