django框架的精益平均对象级规则系统

django-rulez的Python项目详细描述


…|特拉维西图片:https://api.travis ci.org/chrisglass/django rulez.png
…_travisci https://travis-ci.org/chrisglass/django-rulez

|travisci|

#############
django-rulez
#############

django-rulez is a lean, fast and complete rules-based permissions system for
the django framework.

Most other authentication frameworks focus on使用数据库连接,经过一段时间后会变得很慢(因为大多数查询都会生成大量连接)。
django rulez使用基于内存的hashmap来代替。


django rulez是从django规则派生出来的,因为django规则设置的一些目标与我们当前的项目目标不匹配。您可以参考他们的
github项目页面,了解更多关于这个另一个酷项目的信息:
https://github.com/maraujop/django rules
为优秀的工作人员而欢呼!

通常,它也是实例级授权后端,将
规则本身存储为模型上的方法。


status
==


由于许多人问起-此项目仍处于活动状态,并在生产系统中使用,但其当前目标已实现而且不会有太多的发展。


pull请求或讨论是非常受欢迎的,特别是如果您有一个我们没有想到的有趣的用例:)


h.

installation
==





简单地安装django rulez,就像安装任何其他pypi包一样::




"settings.py"中的"authentication_backend s"列表:

authentication_backends=[
"django.contrib.auth.backends.modelbackend","django的默认auth backend
"rulez.backends.objectpermissionbackend",


示例
=可以开始了:

model s.py
来自rulez导入注册表


class mymodel(models.model):

def可以编辑(self,user-obj):
"
"不是一个非常有用的规则,但它是一个示例如果user_obj.username=='chris':
返回true
返回false


registry.register('can_edit',mymodel)



规则规定,如果self==user_obj:
return true
return false

"add_to_class"是标准的django方法
user.add_to_class('can_edit',user_can_edit)
,则只能由同一用户修改
registry.register('can_edit',user)


另一个示例:使用角色需要使用角色,但它仍然非常简洁:

models.py
来自rulez.rolez.base导入abstractrole
来自rulez.role s.models导入modelrolemixin
来自rulez导入注册表

类编辑器(abstractrole):
"这是角色"
@classmethod
def是成员(cls,user,obj):
"记住,类方法采用类而不是self。"
如果user.username=='chris':
返回true
返回false


class mymodel(models.model,modelRoleMixin):#别忘了混音!

def可以编辑(self,user_obj):
'
'


ance.can-edit(user_chris)

,或者在django rulez的身份验证后端的帮助下,对用户
对象::


user_chris.has_perm('can_edit',model_instance)

此外,还支持以下模板标记用法::

{%load rulez_perm s%}
{%rulez_perms可以将model_实例编辑为varname%}
{%if varname%}
您有权限
{%else%}
对不起,您没有权限
{%endif%}

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

推荐PyPI第三方库


热门话题
Java:不解析XML的简单XML。例外   KIE Workbench的java自定义UI   java将元素从bucket移动到LinkedList,但有一个元素被完全删除   如何将java stream collect转换为scala   java运行AsynkTask多次不工作   java组织。xml。萨克斯。SAXParseException:cvccomplextype。2.4.c:匹配的通配符是严格的   java是一种计算排序算法所需时间的合适方法   java在O(logn)时间内对排序整数数组中具有相同数字的数字进行计数   xpages从当前数据库javaAgent调用另一个数据库的javaAgent   java如何在instagram中上传特定位置的所有照片   JavaApachePOI可以有效地删除多个列   java创建的对象数   java我可以在关闭连接时关闭Oracle JDBC自动提交吗?