django

Django-27 django内建用户系统

2021-08-02  本文已影响0人  JuliusL

基本字段

模型类位置: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,创建普通用户

from django.contrib.auth.models import User
user = User.objects.create_user(username='用户名',password='密码',email='邮箱',...)

2,创建超级用户create_superuser

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('654321')
  user.save()
  return HttpRespones("删除普通用户成功")
except:
  return HttpRespones("删除普通用户失败")

登录状态保持

from django.contrib.auth import login
def login_view(request):
  user = authenticate(username=username,password=password)
  login(request,user)

登录状态校验

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

登录状态取消

from django.contrib.auth import logout
def logout_view(request):
  logout(request)

对django内建的用户表扩展字段

方案1:通过建立新表,跟内建表做1对1
方案2:继承内建的抽象user模型类

继承内建抽象类

步骤:
1,添加新的应用
2,定义模型类继承AbstractUser
3,settings.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='')

settings.py添加配置
AUTH_USER_MODEL = 'user.UserInfo'

添加用户

from user.models import UserInfo
UserInfo.objects.create_user(username='aa',password='bb',phone='cc')
上一篇下一篇

猜你喜欢

热点阅读