django rest框架的灵活操作级权限
drf-action-permissions的Python项目详细描述
DRF操作权限
Release | CI | Coverage |
---|---|---|
在视图级别上添加动作权限的灵活能力 对于django rest框架。权限可以是复杂的,也可以是简单的。 它可以是纯字符串或函数。
要求
- Python(3.6+)
- Django(1.11.x,2.0+)
- django rest框架(3.7+)
安装
$ pip install drf-common-exceptions
您可以为整个项目定义通用权限类:
REST_FRAMEWORK = {
...
"DEFAULT_PERMISSION_CLASSES": (
"drf_action_permissions.DjangoActionPermissions",
)
...
}
或者将其仅用于特定视图或视图集,并与其他视图结合使用:
fromrest_framework.permissionsimportIsAuthenticatedfromdrf_action_permissionsimportDjangoActionPermissionsclassMyView(APIView):permission_classes=(IsAuthenticated,DjangoActionPermissions)perms_map_action={'retrieve':['users.view_user'],}
用法示例
作为字符串模板或纯字符串的权限:
classPostViewSet(ModelViewSet):permission_classes=(IsAuthenticated,DjangoActionPermissions)perms_map_action={'likes':['%(app_label)s.view_%(model_name)s_list','%(app_label)s.view_like_list'],}
当前对象访问的功能权限:
defcan_view_application(user,_view,obj):"""Can view only archived applications."""ifobj.is_archived:returnuser.has_perm('applications.view_archived_application')returnuser.has_perm('applications.view_application')classApplicationView(ModelViewSet):permission_classes=(IsAuthenticated,DjangoActionPermissions)perms_map_action_obj={'retrieve':[can_view_application],}
开发
安装诗歌和要求:
$ curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python $ python3 -m venv path/to/venv $ source path/to/venv/bin/activate $ poetry install
运行主要命令:
$ make test
$ make watch
$ make clean
$ make lint
默认情况下发布到pypi修补程序版本:
$ make publish
或您想要的任何级别:
$ make publish minor