详解Django中的权限和组以及消息


Posted in Python onJuly 23, 2015

在认证框架中还有其他的一些功能。 我们会在接下来的几个部分中进一步地了解它们。
权限

权限可以很方便地标识用户和用户组可以执行的操作。 它们被Django的admin管理站点所使用,你也可以在你自己的代码中使用它们。

Django的admin站点如下使用权限:

  •     只有设置了 add 权限的用户才能使用添加表单,添加对象的视图。
  •     只有设置了 change 权限的用户才能使用变更列表,变更表格,变更对象的视图。
  •     只有设置了 delete 权限的用户才能删除一个对象。

权限是根据每一个类型的对象而设置的,并不具体到对象的特定实例。 例如,我们可以允许Mary改变新故事,但是目前还不允许设置Mary只能改变自己创建的新故事,或者根据给定的状态,出版日期或者ID号来选择权限。

会自动为每一个Django模型创建三个基本权限:增加、改变和删除。 当你运行manage.py syncdb命令时,这些权限被添加到auth_permission数据库表中。

权限以 "<app>.<action>_<object_name>" 的形式出现。

就跟用户一样,权限也就是Django模型中的 django.contrib.auth.models 。因此如果你愿意,你也可以通过Django的数据库API直接操作权限。

组提供了一种通用的方式来让你按照一定的权限规则和其他标签将用户分类。 一个用户可以隶属于任何数量的组。

在一个组中的用户自动获得了赋予该组的权限。 例如, Site editors 组拥有 can_edit_home_page 权限,任何在该组中的用户都拥有这个权限。

组也可以通过给定一些用户特殊的标记,来扩展功能。 例如,你创建了一个 'Special users' 组,并且允许组中的用户访问站点的一些VIP部分,或者发送VIP的邮件消息。

和用户管理一样,admin接口是管理组的最简单的方法。 然而,组也就是Django模型 django.contrib.auth.models ,因此你可以使用Django的数据库API,在底层访问这些组。
消息

消息系统会为给定的用户接收消息。 每个消息都和一个 User 相关联。

在每个成功的操作以后,Django的admin管理接口就会使用消息机制。 例如,当你创建了一个对象,你会在admin页面的顶上看到 The object was created successfully 的消息。

你也可以使用相同的API在你自己的应用中排队接收和显示消息。 API非常地简单:

  •     要创建一条新的消息,使用 user.message_set.create(message='message_text') 。
  •     要获得/删除消息,使用 user.get_and_delete_messages() ,这会返回一个 Message 对象的列表,并且从队列中删除返回的项。

在例子视图中,系统在创建了播放单(playlist)以后,为用户保存了一条消息。

def create_playlist(request, songs):
  # Create the playlist with the given songs.
  # ...
  request.user.message_set.create(
    message="Your playlist was added successfully."
  )
  return render_to_response("playlists/create.html",
    context_instance=RequestContext(request))

当使用 RequestContext ,当前登录的用户以及他(她)的消息,就会以模板变量 {{ messages }} 出现在模板的context中。

{% if messages %}
<ul>
  {% for message in messages %}
  <li>{{ message }}</li>
  {% endfor %}
</ul>
{% endif %}

需要注意的是 RequestContext 会在后台调用 get_and_delete_messages ,因此即使你没有显示它们,它们也会被删除掉。

最后注意,这个消息框架只能服务于在用户数据库中存在的用户。 如果要向匿名用户发送消息,请直接使用会话框架。

Python 相关文章推荐
python发送邮件接收邮件示例分享
Jan 21 Python
如何使用python爬取csdn博客访问量
Feb 14 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
python实现推箱子游戏
Mar 25 Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
Feb 15 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
Jun 02 Python
python实现经纬度采样的示例代码
Dec 10 Python
Python编写万花尺图案实例
Jan 03 Python
在Django的模板中使用认证数据的方法
Jul 23 #Python
在Django中管理Users和Permissions以及Groups的方法
Jul 23 #Python
Django中对通过测试的用户进行限制访问的方法
Jul 23 #Python
在Django中限制已登录用户的访问的方法
Jul 23 #Python
详解Django框架中用户的登录和退出的实现
Jul 23 #Python
在Django的session中使用User对象的方法
Jul 23 #Python
Django的session中对于用户验证的支持
Jul 23 #Python
You might like
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
走出JavaScript初学困境—js初学
2008/12/29 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
vue实现单选和多选功能
2017/08/11 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中用于计算对数的log()方法
2015/05/15 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
python实现的分层随机抽样案例
2020/02/25 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
商场经理竞聘演讲稿
2014/01/01 职场文书
党建工作整改措施
2014/10/28 职场文书
土建技术员岗位职责
2015/04/11 职场文书
民主生活会意见
2015/06/05 职场文书
python删除csv文件的行列
2021/04/06 Python