它是Django自带的一个强大的用户认证的模块,用户系统相关的功能,注册登陆,用户认证,注销,修改密码.html
介绍方法以前先写一个功能经过功能来更好的认识Auth模块python
建立炒鸡用户,用来登录django admin的后台管理django
createsuperuser
密码输入大于8位,Django中建立用户的时候默认的密码字节数量是大于8位的.后端
模块导入session
from django.contrip import auth
搭建好html文件函数
先放完整代码工具
from django.shortcuts import render.HttpResponse,redirect from djang.contrip import auth def login(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') # models.User.objects.filter(username=username,password=password).first() # user_obj = auth.authenticate(username=username,password=password) # user_obj = auth.authenticate(username=username) # is_alive = User.objects.filter(username=username) # # print(is_alive) # print(is_alive.first().password) """ 该方法会有一个返回值 当条件存在的状况下 返回就是数据对象自己 条件不知足 直接返回None """ # if user_obj: # print(user_obj) # print(user_obj.username) # print(user_obj.password) # # 必定要记录用户状态 才算真正的用户登陆 # # request.session['user'] = user_obj # auth.login(request,user_obj) # """该方法会主动帮你操做session表 而且只要执行了该方法 # 你就能够在任何位置经过request.user获取到当前登陆的用户对象 # """ # old_path = request.GET.get('next') # if old_path: # return redirect(old_path) # else: # return redirect('/home/') return render(request,'login.html')
提供用户认证功能,直接去数据找真实数据验证跟用户输入的用户名以及密码是否正确,若是认证成功则返回一个数据对象,认证失败就返回None.通常须要username,password两个关键字参数
网站
配置{% csrf_token %}
便可ui
改函数接受request,以及通过认证后的存在user对象,这个函数会在后端为这个用户生成相关的session数据. 而知执行完以后只要能拿到request的地方都能经过request.user获取到当前登陆用户的对象.加密
判断当前的用户是否经过了认证.
该函数没有返回值,调用这个函数,请求的session信息会所有清除,并且使用这个函数也不会报错.
from django.contrib.auth import logout def logout_view(request): logout(request) # Redirect to a success page.
装饰器工具,快捷给FBV视图添加登陆校验.
在用户没有登录的状况下跳转的url有全局配置和局部配置
在装饰器括号内经过login_url参数局部指定跳转url
全局配置的话,用户没有登陆的状况下,全部的视图统一跳转到一个url配置文件中
form django.contrip.decorators import login_required #@login_required(login_url='/xxx/') # 局部配置 @login_required# 全局配置 def my_view(request): ...
CBV视图添加登陆校验
from django.contrib.auth.decorators import login_required from django.utils.decorators import method_decorator class Home(views.View): @method_decorator(login_required) def get(self, request): return render(request, 'home.html')
检验密码是否正确的方法,返回bool值
rt = user.check_password()
修改密码,设置完必定要保存密码(新密码也能够为对象)
user.set_password(password=new_password) user.save()
from djang.contrip.auth.models import User
使用create会密码直接存成明文
User.objects.create(username=username,password=password)
建立普通用户是加密的
User.objects.create_user(username=username,password=password)
建立炒鸡用户,邮箱必须填写
User.objects.create_superuser(username=username,password=password,email='123321@qq.com')
username,password
is_staff : 用户是否拥有网站的管理权限.
is_active : 是否容许用户登陆, 设置为 False,能够在不删除用户的前提下禁止用户登陆。
虽然django自带的auth模块很好用,可是他默认建立的auth_user表咱们不能对其进行操做,那么怎么才能既可使用auth简便的功能又能够进行表内字段的修改,扩展呢?
这时候咱们就应该想到使用继承,类的三大特性之一.操做以下
告诉Django使用新建的类(在settings配置文件中)替代auth_user表