25.-内建用户系统

一、内建用户系统
 
定义:Django带有一个用户认证系统,它处理用户账号、组、权限以及基于cookie的用户会话
用户可以直接使用Django自带的用户表
 
 
 
二、基本字段
复制代码
模型类位置:from django.contrib.auth.models import User
# 对应数据库的auth_user  表

username:用户名

password:密码

email:邮箱

first_name:名

last_name:姓

is_superuser:是否是管理员账号(/admin)

is_staff:是否可以访问admin管理界面

is_active:是否活跃用户,默认True,一般不删除用户,而是将用户的is_active设为False

last_login:上一次的登录时间

data_joined:用户创建的时间
复制代码

 

三、基本模型操作-创建用户
 
导包:from django.contrib.auth.models import User

1.创建普通用户 create_user
user = User.objects.create_user(username='',password='',email='',...)

2.创建超级用户 create_superuser
user = User.objects.create_superuser(username='',password='',email='',...)

 

 
四、基本模型操作-删除用户
try:
    user = User.objects.get(username = '用户名')
    user.is_active = False #记录当前用户无效
    user.save()
    pritn('删除普通用户成功')

except:
    pritn('删除普通通过失败')

 

 
五、基本模型操作-校验密码
 
from django.contrib.auth import authenticate

user = authenticate(username=username,password=password)
#如果用户名密码校验成功则返回对应的user对象,否则返回None

 

六、基本模型操作-修改密码
try:
    user = User.objects.get(username=username)
    user.set_password('password')
    user.save()
    return HttpResponse('修改密码成功')
except:
    return HttpResponse('修改密码失败')

 

 
七、基本模型操作-登录状态保持
复制代码
from django.contrib.auth import login
rom django.contrib.auth import authenticate

def login_view(request):
    user = authenticate(username=username,password=password)
    if user is not None:
        login(request,user)
        return HttpResponse('登录状态成功')
    return HttpResponse('登录状态失败')
复制代码

 

八、基本模型操作-登录状态校验
from django.contrib.auth.decorators import login_required

@login_required
def index_view(request):
    #该视图必须为用户登录状态才可访问
    #当前登录用户可以直接通过request.user获取,不走session获取
    login_user = request.user
    #登录状态校验失败对应的跳转地址需要在settings.py配置LOGIN_URL = '登录失败要跳转的地址'

 

 
九、基本模型操作-登录状态取消
from django.contrib.auth import logout

def logout_view(request):
    logout(request)

 

 
十、内建用户表-扩展字段
方案1:通过建立新表,跟内建表1对1映射
 
方案2:继承内建的抽象user模型类,创建一个新的user表完全继承内建user模型类全部属性,将内建user模型类的数据初始化到新的user表,并且指明应用新的user表,不再用内建用户系统的user表
1.定义模型类继承AbstractUser
2.settings.py中指明AUTH_USER_MODEL = '应用名.类名'
PS:此操作要在第一次Migrate前进行,因为第一次migrate执行了,内建系统的user表就已经初始化数据了
from django.contrib.auth.models import AbstractUser


class UserInfo(AbstractUser): 
    # 只定义了一个phone字段
    # 因为继承了AbstractUser,migrate的时候,内建系统user表的基础数据会同步初始化到数据库
    phone = models.IntegerField('手机号', max_length=11, default='')

 

PS:操作该用户表 的方式 要完全按照内建用户系统的方法

作者:木子七

出处:https://www.cnblogs.com/Mickey-7/p/15792108.html

posted @   木子七  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
workspaces
keyboard_arrow_up dark_mode palette
选择主题