django rest框架的灵活操作级权限

drf-action-permissions的Python项目详细描述


DRF操作权限

ReleaseCICoverage
pypibuildcodecov

在视图级别上添加动作权限的灵活能力 对于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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在ArrayList中比较数字   java在Kotlin中使异步调用同步   让“Scala编程”junit示例在IntelliJ中工作的java问题   java Servlet侦听器未在ContextListener中设置属性   将Microsoft SQL Server数据库连接到我的Java项目   加载资源时出现java“需要注册工厂”异常   java如何使用POI检查excel中的重复记录?   java如何更改机器生成的代码   java如何确保重写的方法是同步的   用Spring编写Hibernate时的java XML奥秘   java管理mysql数据库中存储的用户权限   java如何运行。来自Javascript的jar方法   java我想在Web应用程序中进行身份验证&对桌面应用程序使用相同的凭据。我该怎么做?