21. Django进阶:内建用户系统

一、定义

二、基本字段

模型类位置 from django.contrib.auth.models import User

字段含义
username用户名
password密码
email邮箱
first_name
last_name
is_superuser是否是管理员账号(/admin)
is_staff是否可以访问admin管理界面
is_active是否是活跃用户,默认True
一般不删除用户,而是将用户的is_active设为False
last_login上一次的登陆时间
date_joined用户创建时间

三、创建用户

3.1. 创建普通用户

from django.contrib.auth.models import User

user = User.objects.create_user(username='用户名', password='密码', email='邮箱', ...)

3.2. 创建超级用户

from django.contrib.auth.models import User

user = User.objects.create_superuser(username='用户名', password='密码', email='邮箱', ...)

四、删除用户

from django.contrib.auth.models import User

try:
    user = User.objects.get(username='用户名')
    user.is_active = False	# 记录当前用户无效
    user.save()
    print("删除普通用户成功!")
except:
    print("删除普通用户失败!")

五、校验密码

from django.contrib.auth import authenticate

user = authenticate(username=username, password=password)

说明:如果用户名密码校验成功则返回对应的user对象,否则返回None

六、修改密码

from django.contrib.auth.models import User

try:
    user = User.objects.get(username='用户名')
    user.set_password('新密码')
    user.save()
    print("修改密码成功!")
except:
    print("修改密码失败!")

七、登录状态保持

from django.contrib.auth import login, authenticate


def login_view(request):
    user = authenticate(username=username, password=password)
    # 用户存在,记录登录状态
    login(request, user)

八、登录状态校验

from django.contrib.auth.decorators import login_required


@login_required
def login_view(request):
	# 该视图必须为用户登录状态下才可访问
	# 当前登录用户可通过request.user获取
   login_user = request.user
   ...

九、登录状态取消

from django.contrib.auth import logout


def logout_view(request):
    logout(request)

十、字段扩展

方案1:通过建立新表,跟内建表做1对1

方案2:继承内建的抽象user模型类

十一、继承内建抽象类

步骤:

  1. 添加新的应用
  2. 定义模型类 继承AbstractUser
  3. setting.py中指明AUTH_USER_MODEL='应用名.类名'

注意:

此操作要在第一次Migrate之前进行

示例 —— user/models.py 添加user应用

from django.db import models
from django.contrib.auth.models import AbstractUser


class UserInfo(AbstractUser):
    # 定义新字段
    phone = models.CharField(max_length=11, default='')

setting.py中添加配置

AUTH_USER_MODEL = 'user.UserInfo'

添加用户

from user.models import UserInfo
UserInfo.objects.create_user(username='demo', password='123', phone='15611111111')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KaiSarH

如果觉得文章不错,可以支持下~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值