引入
我们在开发一个网页的时候, 无可避免的需要设计实现网站的用户系统; 此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能, 为了节省这个麻烦的过程, Django自带了强大的用户认证系统Auth, 它默认使用auth_user表来存储用户的数据
ps : auth 本质上也是一个app
一.Auth 模块的使用于字段
1.先导入 auth 模块
form django.contrib import auth
2.进行数据迁移命令来生成 auth_user 表
python3 manage.py makemigrations
python3 manage.py migrate
3.auth_user 表字段
- auth_user 默认有11 个字段
字段 | 释义 |
---|---|
id | ID |
password | 密码 |
last_login | 最后登录时间 |
is_superuser | 是否是管理员 |
username | 用户名 |
first_name | 姓 |
last_name | 名 |
邮箱 | |
is_staff | 是否是工作人员 |
is_active | 是否激活 |
date_joined | 创建时间 |
二.常用方法
1.authenticated : 登入认证
-
作用 : 提供了用户认证功能,即验证用户名以及密码是否正确
-
必须传入两个参数 : username & password
-
校验成功返回 True, 校验失败返回 None
-
request 可以不用传, 默认就是 None
from django.contrib import auth
user_obj = auth.authenticated(request, username=username, password=password)
if user_obj:
print(user_obj.username)
print(user_obj.password)
else:
print('校验失败')
2.login : 保存用户状态
- 作用 : 该函数接收一个HttpRequest对象,以及一个经过认证的 User 对象
- 实现一个用户登录的功能, 本质上会在后端为该用户生成相关session数据存在session表中
- 只要执行了该方法 你就可以在任何地方通过request.user获取到当前登陆的用户对象,否则拿到的是一个匿名用户对象
# 登入成功后调用
auth.login(request, user_obj) # 内部调用的就是 request.session['key']=user_obj
3.logout : 退出登入
- 作用 : 该函数接受一个HttpRequest对象,无返回值
- 当调用该函数时, 当前请求的session信息会全部清除; 该用户即使没有登录, 使用该函数也不会报错
# 注销当前登录用户:
auth.logout(request) # 内部使用的就是 request.session.flush()
4.is_authenticated : 判断用户是否登入
- 用来判断当前请求是否通过了认证
# 视图类中使用
if not request.user.is_authenticated():
print('未登入,请先登入')
# 模板中使用
{
% if request.user.is_authenticated %}
{
{
request.user.username }} 欢迎回家
{
% else %}
<a href="/auth_login/">请去登录</a>
{
% endif %}
5.login_required : 登入认证装饰器
- 作用 : 一个装饰器工具, 用来快捷的给某个视图添加登录校验
# 使用方式一 : 直接在视图函数上添加
@login_required(login_url='/login/') # 需要指定url(因为它存在默认url)
def logout_func(request):
auth.logout(request)
return redirect("/login/")
# 使用方式二 : 在配置文件中全局配置
LOGIN_URL = '/login/'
6.create_user : 创建普通用户
- 作用 : 提供的一个创建新用户的方法, 需要提供必要参数 username & password等
from django.contrib.auth.models import User
user = User.objects.create_user(username='用户名',password='密码',email='邮箱',...)
7.create_superuser : 创建管理员用户
- 作用 : 提供的一个创建管理员用户的方法, 需要提供必要参数 username & password & email等
from django.contrib.auth.models import User
user = User.objects.create_superuser(username='用户名'