一:auth基础
(1)作用:django提供给开发人员 对用户进行操作的模块的
例如:登录 注册 认证 注销等等
(2)使用方式
from django.contrib import auth
二:方法介绍
(1)authenticate()
(1)提供了用户认证功能
(2)如果认证成功会返回一个用户对象
<p>用户名称:<input type="text" name="username"></p>
<p>用户密码:<input type="text" name="password"></p>
<input type="submit">
from django.contrib import auth
def user(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user_obj = auth.authenticate(username=username,password=password)
return render(request,'user.html')
user_obj = auth.authenticate(username=username,password=password)
print(user_obj) # admin 对象
print(user_obj.username) # admin
print(user_obj.password) # pbkdf2_sha256$36000$qVMoNB0niRMM$Z+32NPaCez7yHBcLokJq+KSzmkdv3vetY+tFvhGCrC8= 密码
(2)login(HttpRequest, user)
(1)接受前端输入的数据
(2)给前端用户设置session值
auth.login(request,user_obj)
PS:
(1)只要执行此代码 就可以再任意位置获取用户对象
(2)如果用户对象不存在 会返回一个匿名对象
(3)is_authenticated
(1)查看对象是否登录
(2)如果登录返回true 反之返回false
request.user.is_authenticated
(4)check_password
(1)检验密码是否正确
(2)其会将用户输入的密码自动进行加密 与后端数据库进行比较
request.user.check_password(密码)
(5)set_password
(1)将原有的密码进行更改
(2)进行更改之后一定要执行save命令
request.user.set_password(new_password)
request.user.save()
(6)auth.logout(request)
(1)将数据库与浏览器中的数据都会清除
(2)类似于request.session.flush
(7)login_requied
from django.contrib.auth.decorators import login_required
@login_required(login_url='/xxx/') # 局部配置
def index(request):
pass
PS:
(1)如果不指定login_url参数 如果用户没有登录会跳转到一个奇怪的页面
(2)指定可以跳转到指定页面
# 全局配置 settings文件中
LOGIN_URL = '/xxx/'
(8)创建用户
# User.objects.create(username =username,password=password) # 创建用户名的时候 千万不要再使用create 了
# User.objects.create_user(username =username,password=password) # 创建普通用户
User.objects.create_superuser(username =username,password=password,email='123@qq.com') # 创建超级用户 邮箱必填
三:自定义auth_user表格
from django.contrib.auth.models import AbstractUser
# 使用类的继承
class Userinfo(AbstractUser):
# 千万不要跟原来表中的字段重复 只能创新
phone = models.BigIntegerField()
avatar = models.CharField(max_length=32)
# 一定要在配置文件中 告诉django
# 告诉django orm不再使用auth默认的表 而是使用你自定义的表
AUTH_USER_MODEL = 'app01.Userinfo' # '应用名.类名'
PS:
(1)执行数据库迁移命令
(2)所有的auth模块功能 全部都基于你创建的表
(3)而不再使用auth_user