Django内建用户系统

酥酥 发布于 2021-09-18 49 次阅读


Django内建用户系统

Django带有一个用户认证系统。它处理用户账号、组、权限以及基于cookie的用户会话。
用户可以直接使用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用户创建的时间

基本操作-创建用户

  1. 创建普通用户create_user

    1. from django.contrib.auth.models import User

    2. user =user.objects.create_ user(username=’用户名’, password=’密码’,email=’邮箱’D…) ##会自动hash,密码强度无限制

  2. 创建超级用户create_superuser

    1. from django.contrib.auth.models import User

    2. user=( user.objects.create_ superuser(username=’用户名’, password=’密码’,email=’邮箱 i’,…)

基本操作-删除用户

伪删除

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是否存在

说明:

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

基本操作-修改密码

from django.contrib.auth.models import User
try:
   user= User.objects.get(username='xiaonao')
   user.set_password( '654321')
   user.save()
   return HttpResponse("修改密码成功!")
except:
   return HttpResponse("修改密码失败!")

登陆状态保持

from django.contrib.auth import login
def login_view(request):
   user = authenticate(username=username, password=password)
   user=authenticate(username=username, password=password)#判断user是否存在
    login(request, user)##这个状态真正保持会话状态

登陆 状态校验

from django.contrib.auth.decorators import login_required
@login required
def index_view(request):
#该视图必须为用户登录状态下才可访问#当前登陆用户可通过request.user获取
    login_user = request.user#在视图中调用这个函数可以获得用户信息!!!!

settings.py中可以配置没有登陆状态跳转到的页面

LOGIN_URL = '/accounts/login/'  #这个路径需要根据你网站的实际登陆地址来设置

登陆状态取消

from django.contrib.auth import logout

def logout_view(request):

logout(request)

怎么去扩展呢

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

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

步骤:

  1. 添加新的应用

  2. 定义模型类继承AbstractUser

  3. settings.py中指明AUTH_USERMODEL =’应用名.类名’

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

内建方法

From django.db import models 
From diango.contrib.auth.models import Abstractuser
#Create your models here.
c1ass userInfo(Abstractuser):
          phone = models.charField(max_length=11, default='')

settings.py中添加配置

AUTH_USER_MODEL=’user.UserInfo’#大小写严格

添加用户

from user.models import UserInfo

UserInfo.objects.create_User(username=’susu’,password=’123456′,phone=’226623‘)