Django-auth模块

一、什么是auth模块:

auth模块是Django自带的用户认证模块,我们在开发网站的时候,无可避免的需要设计实现网站的用户系统,此时我们需要实现包括用户注册,用户登录,用户认证,注销,修改密码等功能,这还真是比较麻烦的事情呢!!!

同时,Django最为一个完美主义者的终极框架,当然也会想到用户的这些情况。由此用户认证系统auth就出现了!

二、auth模块的常用方法:

1.创建用户:

from django.contrib.auth.models import User
User.objects.create(username=username,password=password)  # 不可用  密码不是加密的
User.objects.create_user(username=username,password=password)  # 创建普通用户密码自动加密
User.objects.create_superuser(username=username,password=password,email='123@qq.com')  # 创建超级用户需要邮箱数据

 

2.校验用户名和密码是否正确:

from django.contrib import auth
user_obj = auth.authenticate(request,username=username,password=password)
# 必须传用户名和密码两个参数缺一不能

3.保存用户登录状态:

auth.login(request,user_obj)
# 只要这句话执行了 后面在任意位置 只要你能拿到request你就可以通过request.user获取到当前登录的用户对象

4.判断用户登录状态:

request.user.is_authenticated()

5.校验原密码是否正确

request.user.check_password(old_password)

6.修改密码:

request.user.set_password(new_password)
request.user.save()  # 千万不要忘了

7.注销:

auth.logout(request)

8.校验用户是否登录|装饰器

from django.contrib.auth.decorators import login_required
#局部配置(login_url='/login/')
    @login_required(login_url='/login/')
    def index(request):
        pass
#全局配置(login_url='/login/')
    settings配置文件中 直接配置
    LOGIN_URL = '/login/'
    @login_required
    def index(request):
        pass
# 如果全局配置了 局部也配置  以局部的为准

三、如何扩展auth_user字段表

方式一:利用一对一外键字段关系

from django.contrib.auth.models import User
class
UserDetail(models.Model): phone = models.BigIntegerField() user = models.OneToOneField(to='User')

方式二:利用继承关系(推荐使用)

from django.contrib.auth.models import AbstractUser
class Userinfo(AbstractUser):
  phone = models.BigIntegerField()
  register_time = models.DateField(auto_now_add=True)

# 一定要注意 还需要去配置文件中配置,当在工作中,都是先进行表设计的,
这时我们要先在创建表设置下面设置,这时Django不会自动创建auth表了!
AUTH_USER_MODEL = 'app01.Userinfo' # 应用名.表名 # 这么写完之后 之前所有的auth模块功能全都以你写的表为准

 

posted @ 2019-12-05 21:07  MiaoQinHong  阅读(281)  评论(0编辑  收藏  举报