共计 1055 个字符,预计需要花费 3 分钟才能阅读完成。
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)
在这一行中增加相应的权限即可,如:
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
Ubuntu Server 12.04 安装 Nginx+uWSGI+Django 环境 http://www.linuxidc.com/Linux/2012-05/60639.htm
Django 实战教程 http://www.linuxidc.com/Linux/2013-09/90277.htm
Django Python MySQL Linux 开发环境搭建 http://www.linuxidc.com/Linux/2013-09/90638.htm
Django 的详细介绍 :请点这里
Django 的下载地址 :请点这里