前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django为所有Model增加同样的权限的便捷方法

Django为所有Model增加同样的权限的便捷方法

作者头像
星哥玩云
发布2022-07-04 10:19:26
1990
发布2022-07-04 10:19:26
举报
文章被收录于专栏:开源部署开源部署

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档