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用户创建的时间
基本操作-创建用户
-
创建普通用户create_user
-
from django.contrib.auth.models import User
-
user =user.objects.create_ user(username=’用户名’, password=’密码’,email=’邮箱’D…) ##会自动hash,密码强度无限制
-
-
创建超级用户create_superuser
-
from django.contrib.auth.models import User
-
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模型类⭐
步骤:
-
添加新的应用
-
定义模型类继承AbstractUser
-
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‘)
Comments NOTHING