Django之Auth模块 实现登录,退出,自带session 与认证功能的一个重要的模块auth模块

1. 什么是Auth模块,有什么用?

django的auth的模块的使用: auth 是集合注册,登录,注销,session 多个功能集合在一起的模块

2. 使用Auth组件的默认auth_user表常用操作

from django.contrib.auth.models import User
# 1、创建普通用户
User.objects.create_user(username=‘Owen‘, password=‘123‘)

# 2、创建超级用户
User.objects.create_superuser(username=‘root‘, password=‘root‘, email=‘root@root.com‘)

# 3、获取第一个用户
user = User.objects.first()

# 4、修改密码
user.set_password(‘000‘)
user.save()

# 5、校验密码
res = user.check_password(‘000‘)

Auth组件默认auth_user表常用操作

3. auth 组件的常用功能:

例题: 检验第一个用户的密码
user = User.objects.first()
res = user.check_password(‘000‘)
# 检验的结果是布尔值, True 或者是False

2. django 的检验用户的账号与密码是否正确的模块:
from django.contrib.auth import authenticate
user = authenticate(username=usr, password=pwd)
#校验用户账号及密码,校验成功返回user对象

3. django 的检验用户成功后的登录模块, 登录之后直接添加session的功能
from django.contrib.auth import login
login(request, user) # 注册authenticate成功(当前登录)的用户
#注册用户到request对象中,注册成功可以request.user访问当前登录用户(会形成session记录)

4. django 模块中的注销用户,用户注销 用户可以直接退出了,session会消失
from django.contrib.auth import logout
logout(request)

5. django 模块的检验用户是否登录的方法

# 视图函数中使用
if request.user.is_authenticated(): pass
# 模板语言中使用
{% if request.user.is_authenticated %}
{% else %}
{% endif %}

4. auth模块之检验用户是否登录,可以做装饰器用

from django.contrib.auth.decorators import login_required

@login_required(login_url=‘/user_login/‘)

def user_home(request):

    return render(request, ‘user.html‘, locals())

# 注意他返回的是/user_login/?next=/user_order/ 所以前面拿到的是‘next‘的key 就可以拿到返回值/user_order/

5. auth模块之给user_auth表添加额外的字段

6. 当发现auth模块的User表的信息太少,想自己添加信息的话:

# 在models.py 内
from django.contrib.auth.models import AbstractUser


class User(AbstractUser):
# 增加自定义字段
info = models.TextField(null=True)
phone = models.TextField(null=True)


# settings.py配置
AUTH_USER_MODEL = ‘app.User‘

# 下次在调用User表的话 就使用 from app.models import User

6. 通过auth组件实现前端实现用户登录跳出不同的页面的功能

7. 如何在前端显示 这个是谁的主页信息
<body>
<h1>{{ request.user.username }}的个人订单</h1>
</body>
# request.user 是拿到当前登录的对象,
# .username 是拿到当前对象的名字来显示 谁谁谁的的个人订单

8. 如何实现用户登录了就显示 个人主页与注销 没登录就显示 登录与注册
# 在前端写:
<p>
{% if request.user.is_authenticated %} #判断用户是否登录成功
<a href="/user_home/">{{ request.user.username }}</a> #如果登录成功显示 用户的名字
|
<a href="/user_logout/">注销</a> # 和注销
{% else %}
<a href="/user_login/">登录</a> #如果用户没登录, 显示登录
|
<a href="/user_register/">注册</a> # 和注册
{% endif %}
</p>

如何在前端显示 这个是谁的主页信息

Django之Auth模块 实现登录,退出,自带session 与认证功能的一个重要的模块auth模块

上一篇:【题解】2021暑 DAY2


下一篇:从线性变换的角度看待 FWT