django的权限学习

Permission、User 两个都是django默认的models(数据库的表)


Permiision(表)有三大字段:name,codename,content_type_id;
User表我也看不懂,还涉及很多用户,组的知识(superuser,abstractuser,anonymoususer,各种继承,各种装饰器),少年对着导包时的User,ctrl+b吧
name就是权限名,content_type_id是权限类id,codename相当于描述
Permission默认有六个权限类别(content_type_id),每个类别默认给增删改查四种:
1、logentry(登录管理:增删改查,add、delete、add、view)  
2、permission(权限管理)
3、user(用户管理)
4、group(组管理)
5、contenttype管理-->5和6还没怎么看弄
6、session管理




两者关系是多对多,还有一个中间表user_permission
多对多关系调用一定要记得:
声明字段是在User model中的,
user_permissions = models.ManyToManyField(Permission,...)
正向是user->permission

反向是permission->user




开始敲代码
点击进入python console(左下角)
1、先导包
from django.contrib.auth.models import Perssion,User




2、然后增加一个用户,我是在后台界面加的
获取一个daniel的用户,你可以先登录后台创建一个新用户,或者直接数据库加一个
你也可以在python控制台输入User.objects.create(username='daniel'...)
或者在splite3数据库中直接增加提交
推荐你后台添加,界面操作不容易错




3、参考了http://www.cnblogs.com/CQ-LQJ/p/5609690.html
当时用后台创建用户的时候我好像给了content_type_id=2(权限管理)的权限,没有不知道会不会报错
增:
u=User.objects.get(username='daniel') 
u.save()
p = Permission.objects.create(name=u'管理权限',content_type_id=2,codename=u'权限管理') #中文前面加u代表unicode编码
正向添加:u.user_permissions.add(p) 正向不用加set,混蛋设置字段为user_permission我也很无奈,如果设置为permission好理解
方向添加:p.user_set.add(u)




批量添加
p2 = Permission.objects.create(name=r'用户管理',content_type_id=3,codename=u'用户管理权限')
u.user_permissions.add(p1,p2)


删:
u.objects.get(username='daniel').user_permissions.remove(p)  #刚刚上面在
清空:u.objects.get(username='daniel').user_permissions.clear()




改:
和一对多类似,只修改当前表


查:
u.objects.user_permissions.all()
u.objects.user_permissions.filter(content_type_id=2)
p.objects.user_set.all()

p.objects.user_set.filter(username='daniel')

python控制台查结果:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django是一个流行的高级Python Web框架,用于快速开发安全且可维护的Web应用程序。它以“ batteries included”为理念,提供了许多内置的功能和组件,如ORM(对象关系映射)、模板系统、认证系统和管理后台等,这使得开发者能够专注于业务逻辑而不是基础设施。 **学习Django的主要步骤包括:** 1. **安装和设置**:首先确保你已经安装了Python和pip,然后从官网下载并安装Django。 2. **基础知识**:了解Python基础语法、类和对象、数据类型、异常处理等。Django基于Python,所以Python基础至关重要。 3. **入门教程**:通过官方文档或在线教程开始,从创建第一个Django项目开始,理解项目的结构和组成部分。 4. **模型和数据库**:学习如何定义模型来映射数据库表,并使用Django ORM进行CRUD操作。 5. **视图和路由**:学习如何创建视图处理HTTP请求,以及如何配置URL路由。 6. **模板系统**:理解Django模板语言(Template Language)及其用法,用于生成HTML内容。 7. **认证和权限**:学会如何处理用户身份验证和授权。 8. **中间件**:深入理解如何扩展Django的行为和处理请求的生命周期。 9. **模板标签和过滤器**:掌握自定义模板表达式和数据处理技巧。 10. **部署**:学习Django应用部署到生产环境,如Gunicorn和Nginx。 **相关问题--:** 1. Django的优点有哪些? 2. 在实际项目中,如何优化Django的性能? 3. 如何在Django中实现RESTful API?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值