Python

Django前后端分离实践之DRF--06

2018-10-21  本文已影响6人  f050d162bcc1

一、认证和权限

目前,我们的API对谁可以编辑或删除代码段没有任何限制。我们希望有更高级的行为,以确保:

1. 在模型中增加一个字段

    # 操作者
    operator = models.ForeignKey('auth.User')
选区_197

2. 生成迁移文件和执行迁移

选区_198 选区_199

3. 去序列化里面把字段给添加上

选区_200 选区_001
    # 读取用户名
    operator = serializers.ReadOnlyField(source='operator.username')
选区_003 选区_004

4. 通过认证的用户才能修改

from rest_framework import permissions
选区_008 选区_006 选区_007 选区_009

5. 创建自己的权限

选区_011

from rest_framework import permissions

class IsOwnerOrReadOnly(permissions.BasePermission):
    """
    自定义权限只允许对象的所有者编辑它
    """
    def has_object_permission(self, request, view, obj):
        # 读取权限允许任何请求
        # 所以我们总是允许GET HEAD POTIONS请求
        if request.method in permissions.SAFE_METHODS:
            return True
        # 只有该出版社的录入者才有权限写
        return obj.operator == request.user
选区_012 选区_014
from app01.permissions import IsOwnerOrReadOnly
选区_015
上一篇 下一篇

猜你喜欢

热点阅读