我正在为文档应用程序创建基于类的API,但我想在APIView中为帖子和补丁定义添加特定权限.例如,
class DocumentList(APIView): def get(self,request,format=None): ... blah def post(self,format=None): only allow administrators to create new documents ... blah
解决方法
By default permissions are unrestricted.在您的settings.py中,您可以指定一组不同的默认值,以便用户必须进行身份验证并拥有正确的Django模型权限.您需要在视图类上指定一个模型属性才能使DjangoModelPermissions生效.
# settings.py REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated','rest_framework.permissions.DjangoModelPermissions' ) } # views.py class DocumentList(APIView): model = Document ...
DjangoModelPermissions权限映射can be found in the source.
> GET,OPTIONS和HEAD不需要许可,但由于我们指定了IsAuthenticated,我们仍然要求> POST地图添加> PUT和PATCH地图改变>删除要删除的地图