本文主要是介绍Django为所有Model增加同样的权限的便捷方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Django为所有Model增加同样的权限的便捷方法
Django自带的contrib.auth库有着强大的管理功能,它会为每个模块创建3个默认权限:add, change, delete。但是,有时我们想为所有model增加同样的权限(如read),那该怎么办呢?
如果在每个Model的class Meta中增加permissions,那就要修改所有Model增加相同的行,那方法就太土了。
一个捷径就是: 修改Django.contrib.auth的一行代码就可以了。文件路径为 django\contrib\auth\management\__init__.py, 代码片段如下:
- def _get_all_permissions(opts):
- "Returns (codename, name) for all permissions in the given opts."
- perms = []
- for action in ('add', 'change', 'delete'):
- perms.append((_get_permission_codename(action, opts), u'Can %s %s' % (action, opts.verbose_name_raw)))
- return perms + list(opts.permissions)
def _get_all_permissions(opts):"Returns (codename, name) for all permissions in the given opts."perms = []for action in ('add', 'change', 'delete'):perms.append((_get_permission_codename(action, opts), u'Can %s %s' % (action, opts.verbose_name_raw)))return perms + list(opts.permissions)
在这一行中增加相应的权限即可,如:
for action in ('add', 'change', 'delete'):
改成:
for action in ('read', 'add', 'change', 'delete'):
然后运行python manage.py syncdb,就可以看到auth_permission表后面已经增加了所有model的read权限了。是不是很便捷呢?
关于增加某个Model的自定义权限可以参考官方文档:https://docs.djangoproject.com/en/1.4/topics/auth/#custom-permissions
这篇关于Django为所有Model增加同样的权限的便捷方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!