0%
内容概要
- 用户认证模块auth
- auth模块补充
- auth_user表扩展字段
内容详细
auth模块
1 2 3 4 5 6 7 8
| 主要是用来做用户相关的功能 注册 登录 验证 修改密码 注销
访问admin需要管理员账号 该账号数据均来源于数据库迁移之后生成的auth_user表 如何创建admin管理员账号 createsuperuser
|
具体操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| from django.contrib import auth
auth.authenticate(request,username=username,password=password)
auth.login(request,user_obj)
request.user.is_authenticated()
request.user
request.user.check_password()
request.user.set_password() request.user.save()
from django.contrib.auth.decorators import login_required """ 跳转全局配置 LOGIN_URL = '/lg/' 跳转局部配置 @login_required(login_url='/lg/') """
|
auth模块补充
1 2 3 4 5 6 7 8 9 10
| 1.用户注册 from django.contrib.auth.models import AbstractUser,User # 操作auth_user写入数据不能使用create方法 密码不会自动加密 # User.objects.create(username=username,password=password,email=email) # 创建普通用户 User.objects.create_user(username=username,password=password,email=email) # 创建超级用户 User.objects.create_superuser(username=username, password=password, email=email) 2.用户注销 auth.logout(request)
|
auth模块用户表扩展字段
1 2 3 4 5 6 7 8 9 10 11 12
| 在auth_user表的基础之上还想增加额外的字段 并且还可以使用auth模块所有的功能
AUTH_USER_MODEL = 'app01.Userinfo'
from django.contrib.auth.models import AbstractUser class Userinfo(AbstractUser): phone = models.BigIntegerField() info = models.CharField(max_length=255)
|
小结
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| 1:校验用户名与密码
auth.authenticate(username=username, ...) 2:保存用户信息 auth.login(request, user_obj) 3:判断用户是否登录 request.user.is_authenticated() 4:装饰器 form django.contrib.auth.decorators import login_required 局部:@login_required(login_url='/login/') (灵活) 全局:配置--->LOGIN_URL = '/login/' (省事) 5:验证原密码(修改密码) request.user.check_password(原密码) 6:修改密码(两步) request.user.set_password(新密码) request.user.save() 7:创建用户 命令行创建:createsupperuser(超级用户)(管理一般不会使用逻辑代码创建) from django.contrib.auth.models import User User.objexts.create()(创建的用户密码是明文)(不推荐) User.objexts.create_user()(普通用户)
|