定义
- Django带有一个用户认证系统。它处理用户账号、组权限及基于cookie的用户会话
- 用户可以直接使用Django自带的用户表
- 官方文档:https://docs.djangoproject.com/en/2.2/topics/auth
基本字段
模型类位置 from django.contrib.auth.models import User
| 字段 | 含义 |
|---|---|
| username | 用户名 |
| password | 密码 |
| 邮箱 | |
| 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='邮箱',...)
-
创建超级用户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='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)
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)
内建用户表
方案一:通过建立新表,跟内建表做1对1
方案二:继承内建抽象类
步骤:
-
添加新的应用
-
定义模型类继承AbstractUser
-
settings.py中指明AUTH_USER_MODEL=‘应用名.类名’
注意:此操作要在第一次Migrate之前进行
示例 - user/models.py - 添加user应用
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your model here.
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='zc', password='123456', phone='13488871101')7.2 文件上传
- 定义:用户可以通过浏览器将图片等文件传至网站
- 场景:用户上传头像、上传流程性的文档[pdf,txt等]
上传规范
文件上传必须为POST提交方式
表单



