Django 之 权限与认证

超级用户的创建
在命令行输入:

python manage.py createsuperuser

后台注册管理

在admin.py文件中设置:

admin.size.register(["模块名称",])  # register后面跟的是一个可迭代对象,列表元祖都可以

中文显示格式

settings.py 文件中设置:LANGUAGE_CODE设置为 zh_Hans

models文件

from django.db import models
class Book(models.Model):
	name = models.charFiled(max_length=20,verbose_name="书名")  
	# 设置verbose_name可以在admin后台管理系统中显示的字段名显示为设置的名称
	class Meta: # 元类
		db_table = "books"  # 在数据库中显示的表名
		verbose_name = "书模型"
		verbose_name_plural = verbose_name

认证管理

创建用户:

其实就是操作auth_user表 ,在里面创建一个用户,可以导入User模块,通过User模块创建用户

user = User.objects.create_user(name=,email=,password=)

认证用户:(authenticate)

user = authenticate(username=,password=)  此方法不验证 is_active 标志位

判断登录

方式一:

user = authenticate(username=,password=)
if user is not None:
	if is_active:
		login(request,user)  
		#   login 向session中添加SESSION_KEY,SESSION数据中保存了用户ID,便于对用户进行跟踪

方式二:装饰器

@login_required(login_url:)  设置若没登录将进行重定向到login_url指定的位置

登出

logout(request)

权限管理

Django的权限系统是由用户User(),组Group(),权限Permission()完成的。 每个模型默认由四个权限(增删改查)
创建用户: 见认证管理
创建组: 映射的是 auth_group()表
group1 = Group.objects.create(name=)

组与用户的关系:

user对象.groups.add(组对象)    用户加入组

group对象.user_set.add(用户对象)  组加入用户

user对象.groups.remove(组对象)   用户退出组

group对象.user_set.remove(用户) 组踢出用户

user对象.groups.clear()   用户退出所有组

group对象.user_set.remove() 组踢出所有的用户

权限对象:

per  = Permission.objects.get(codename=)
per = Permission.objects.filter(codename=)[0]

检查用户权限:has_perm(appname.codename)
方式一:

先获取用户为tom的用户:
user1 = User.objects.get(username="tom")
检查tom有myapp中add_student权限:
user1.has_perm(myapp.add_student)

方式二:

@permission_required(appname.codename,login_url:) 装饰器可以代替has_perm

权限与用户的关系:

添加权限:user对象.user_permissions.add(permission对象)  

删除权限:user对象.user_permission.remove(permission对象)

清空权限:user对象.user_permission.clear()

权限与组的关系:

添加权限:group对象.permissions.add(permission对象)

删除权限:group对象.permissions.remove(permission对象)

清空权限:group对象.permissions.clear()

自定义权限:
在模型的Meta中设置自定义权限

模型对象:
	class Meta:
		permission("codename","说明")

在模板中检查登录以及验证权限:
在模板中可以直接调用 user perms 对象 分别对应当前的用户和当前用户的权限

{% if user.is_authenticated  %}   #  判断用户是否登录
{%  if perms.myapp.add_student %}  # 判断当前用户是否有添加学生的权限
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值