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第三方库


热门话题
java web爬虫:使用selenium+webdriver遍历页面链接时出现两种异常   java JPA和SYS_REFCURSOR-like OUT参数   非空参数的java方法引用?   xml中的java子节点名称   java为什么GC不在同一个方法中运行   java如何检查可执行JAR是否已在另一个JVM中完成   将外观更改为Nimbus后出现jtable Java错误   用户界面Java Swing架构问题?   java导入自定义字体时我做错了什么?   java如何用API制作可伸缩的游戏策划   java玩家和方块的碰撞和交集   java增强的for循环   java propertiesmavenplugin不适用于目标writeprojectproperties   java循环返回代码的开头   java使用分号执行apachecommonsexec多个命令   Wicket应用程序中的java全局可访问资源   java在eclipse中设置参数时可以使用类名而不是id吗?   eternal和maxElementsInMemory在ehcache中的java角色?   java ClassCastException在同一个ear中从两个不同的WAR加载同一个类时,由于类装入器不同