當涉及到用戶相關功能的時候就能夠考慮使用auth模塊
特別提醒: 若是使用auth模塊就去使用全套的,不是本身寫一部分,用別人一部分python
在tools裏面的run manage.py 點擊事後輸入終端命令 createsuperuser
數據庫
先導包 from django.contrip import auth
user_obj = auth.authenticate(username=username, password=password)
在django.user表中校驗用戶是否存在
若是用戶存在就返回一個用戶對象,不存在就返回一個Nonedjango
auth.login(request, user_obj)
保存的是校驗用戶是否存在時生成的對象
只要保存了用戶登陸狀態,只要有request的地方就能夠拿到用戶對象(利用session實現,默認會執行一個request.session[鍵]=值
)session
request.user.is_authenticated()
返回值是布爾類型函數
在保存用戶狀態時就說過有request的地方就能夠拿到用戶對象
經過: request.user
拿到對象就能夠點取值到對象的一些字段屬性ui
先導入包:
from django.contrib.auth.decoration import login_required
這個就是一個裝飾器,有兩種配置方法加密
局部須要指定跳轉頁面,具體格式以下,優先級最高url
@login_required(login_url='/login/') def home(request): ...
先到settings.py
文件夾下面去添加一個配置code
LOGIN_URL='/login/' # 指定沒有登錄默認跳轉的頁面爲 login 頁面
在添加裝飾器(全局不用指定,直接加)orm
@login_required def home(request): ...
bool = request.user.check_password(old_password)
返回值是布爾類型
request.user.set_password(new_password) requset.user.save()
記住使用完set_password的時候必定要執行save,否則是無效操做
先導包
form django.contrib.auth.models import User
這一步操做就是至關於把User這張表取出來
# 建立普通用戶 User.objects.create_user(username=username, password=password) # 建立超級用戶(建立超級用戶必需要傳郵箱參數) User.objects.create_superuser(username=username, password=password, email='123@qq.com')
還有一種以前的往數據庫裏面直接建立一條數據的create
咱們是無法和auth一塊兒使用的,由於保存在數據庫裏面的密碼都是通過加密的,使用create
建立的數據中密碼是沒有通過加密的.
很差用
AbstractUser
AUTH_USER_MODEL = '應用名.表名'
來告訴django要用新建的類來代替auth_user表AUTH_USER_MODEL = '應用名.表名'
(必定要配置)1. models.py # 先導入包 from django.contrib.auth.models import AbstractUser class User(AbstractUser): tel = models.IntegerField() ...
注意:
AbstractUser
以後,咱們自定義的字段名不能和以前的字段同樣使用auth的全部功能