Django的规则注册表

django-rules-light的Python项目详细描述


https://secure.travis-ci.org/yourlabs/django-rules-light.png?branch=masterhttps://img.shields.io/pypi/dm/django-rules-light.svghttps://img.shields.io/pypi/v/django-rules-light.svg

这是django规则的简单替代。核心区别在于 它使用可在运行时修改的注册表,而不是数据库 模型。

目标之一是使外部应用程序的开发人员能够制定规则,依赖于 同时允许项目重写规则。

示例your_app/rules_light_registry.py

# Everybody can read a blog post (for now!):rules_light.registry['blog.post.read']=True# Require authentication to create a blog post, using a shortcut:rules_light.registry['blog.post.create']=rules_light.is_authenticateddefis_staff_or_mine(user,rule,obj):returnuser.is_stafforobj.author==user# But others shouldn't mess with my posts !rules_light.registry['blog.post.update']=is_staff_or_minerules_light.registry['blog.post.delete']=is_staff_or_mine

示例your_app/views.py

@rules_light.class_decoratorclassPostDetailView(generic.DetailView):model=Post@rules_light.class_decoratorclassPostCreateView(generic.CreateView):model=Post@rules_light.class_decoratorclassPostUpdateView(generic.UpdateView):model=Post@rules_light.class_decoratorclassPostDeleteView(generic.DeleteView):model=Post

您可能需要阅读 更多。

有什么发现?

关键是这种方法不提供任何安全特性 奎丽塞斯。

这意味着开发人员必须:

  • 在生成查询集时考虑安全性,
  • override 最终外部应用程序列表视图,

要求

  • Python2.7+(支持Python3)
  • Django 1.8+

快速安装

  • 安装模块:pip install django-rules-light
  • 添加到settings.INSTALLED_APPSrules_light
  • 外接程序settings.MIDDLEWARE_CLASSES(或settings.MIDDLEWARE用于django 1.10+):rules_light.middleware.Middleware

您可能需要阅读tutorial

还有很多文档,从核心到工具,包括 调试、记录和测试安全性的指针。

贡献

使用tox命令运行测试。通过所有 测试有更多的机会被合并到中,有关详细信息,请参见community guidelines

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

推荐PyPI第三方库


热门话题
javascript通过WebSocket将服务器时间推送到多个客户端   这种java字节转换是如何工作的   数据库错误。sql。SQLEception:参数索引超出范围(1>参数数,为0)   java如何在搜索时过滤选定的viewpager片段中的recyclerview?   java如何使用OpenCV将图像转换为黑白图像并在ANDROID中消除阴影   Spring MVC项目中的java HTTP服务器状态404错误   Spring MVC中的java JSR303自定义约束验证器   java如何基于另一个ArrayList的值显示ArrayList中的特定项?   java如何在firebase messages节点获取最后发送给我的消息?   部署后在google app engine上运行servlet时发生java错误   java如何使用servlet在两个jsp之间发送数据   java日历年中的周是月中的周   从URL读取一个资源并直接返回这些字节作为REST请求的响应,Java 7和spring MVC 3.2不存储内存