auth模块
用auth模块 就一定要用它本身提供的一些查询,检索,修改,校验的方法
自带的admin管理后台中创建管理员用户,普通用户
(tools菜单中的run manager.py选项下输入)
如何创建超级用户 用于登录django admin的后台管理
createsuperuser
createuser #普通用户
auth基本使用语法
(views.py中)
from django.contrib import auth
from django.contrib.auth.models import User
校验用户是否存在
user_obj = auth.authenticate(username=username,password=password) # 返回的是数据对象
# 没有返回None
# is_alive = User.objects.filter(username=username) #通过orm查找
#保存用户登录状态
auth.login(request,user_obj)# 执行完这一句之后 只要是能够拿到request的地方
# 都可以通过request.user获取到当前登录用户对象
"""该方法会主动帮你操作session表 并且只要执行了该方法
你就可以在任何位置通过request.user获取到当前登录的用户对象
"""
# 简单快捷的判断用户是否登录
print(request.user.is_authenticated())
# 校验原密码对不对
is_right = request.user.check_password(old_password)
# 修改密码
request.user.set_password(new_password) # 仅仅只会在内存中产生一个缓存 并不会直接修改数据库
request.user.save() # 一定要点save方法保存 才能真正的操作数据库
# 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='[email protected]')
auth模块自带登陆装饰器
(views.py中)
from django.contrib.auth.decorators import login_required
# @login_required(login_url='/login/') # 局部配置,直接加在函数上,和普通装饰器一样
# auth校验用户是否登录 全局配置跳转url
LOGIN_URL = '/login/' #在setings.py中加入
@login_required
def set_password(request):
..
当我们使用auth用户认证模块,在表中想要加字段可以继承AbstractUser来实现,自动生成User也是继承了这个.
(models.py中)
from django.contrib.auth.models import AbstractUser
# Create your models here.
class Userinfo(AbstractUser):
"""
强调 你继承了AbstractUser之后 你自定义的表中 字段不能跟原有的冲突
"""
phone = models.BigIntegerField()
avatar = models.FileField()
register_time = models.DateField(auto_now_add=True)
# auth自定义表配置 (在settings.py任意位置加入)
AUTH_USER_MODEL = 'app01.Userinfo'
# 固定语法: AUTH_USER_MODEL = '应用名.表名'
原文地址:https://www.cnblogs.com/cheng825/p/11773856.html
时间: 2024-11-06 03:39:27