需求:会员可以有对物品的所有权限,游客只有看的权限。
实现: 通过观看rest-farmework源码。
创建类 UserProfile
class UserProfile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE,primary_key=True)
role = models.CharField(choices=UserProfile_Role_Choices,default='admin',max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
自定义增加字段 role 通过role的值判断权限
创建权限类:
class CustomPermissonClass(rest_framework.permissions.AllowAny):
def has_permission(self, request, view):
user_id = request.user.id
role = UserProfile.objects.filter(user_id=user_id)[0].role
if role == "test":
if request.method in ['GET',]: # 模仿rest farmework的权限设置 通过请求方式来控制权限
return True
else:
return True
return False
最后导入setting中。大工告成。
网友评论