它是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表