django內置的用戶認證系統 ,能夠快速 的實現,登陸,註銷,修改密碼...python
一、先建立超級用戶 :git
python3 manage.py createsuperuser;
輸入用戶名,郵箱 (能夠不輸入),密碼,敲擊回車,建立成功。也就是在auth_user這個表中插入了一條數據(密碼 是加密的,因此我不能手動插入)
二、驗證用戶:ajax
from django.contrib import auth user=auth.authenticate(request,username=name,password=pwd) 至關於在查詢 :user=models.User.objects.filter(name=name,pwd=pwd).first() 若是校驗經過,會返回一個user 對象,經過判斷user對象,校驗是否驗證成功
三、登陸:數據庫
auth.login(request,user);其實就是在session中寫了一條數據
四、一旦登陸成功 ,調了 這個函數 login(request,user),之後 在視圖類,函數中的request對象中,就有一個user對象,就是當前登陸的用戶對象,若是沒有登陸,request.user=AnonymousUser,匿名用戶 。django
五、註銷:session
auth.logout(request); 內部調用 了request.session.flush(),刪除了登陸 狀態
六、登陸認證裝飾器:app
from django.contrib.auth.decorators import login_required
@login_required(redirect_field_name='eee',login_url='/login/')
-redirect_field_name:修改?後面的key值, -login_url:若是沒有登陸,跳轉到的頁面 -能夠局部配置 -能夠全局配置(在setting中)
# 全局的配置,若是沒有登陸,跳到這個路由 LOGIN_URL='/login/'
七、建立用戶:框架
from django.contrib.auth.models import User 建立 超級用戶和普通 用戶,不能用create
即:user=User.objects.create(username=name,password=pwd) 建立超級用戶: user=User.objects.create_superuser(username=name,password=pwd) 建立普通用戶: user=User.objects.create_user(username=name,password=pwd)
八、校驗密碼:數據庫設計
request.user.check_password(pwd)
先拿到用戶(能夠登陸用戶,能夠現查)
九、修改密碼:編輯器
user.set_password(pwd)
user.save()
注意:必定要調用save(),不然是不保存的
十、is_authenticated(): 若是經過驗證,輸出true,反之false
十一、其餘方法(瞭解)
is_active:禁止 登陸網站(用戶好存在,封號 )
is_staff:是否對網站有管理權限(能不能登陸admin)
十二、刪除用戶
orm刪除,
若是 想在認證組件上加手機號 等其餘字段:如何處理?
方法一: 1、定義一個表模型 ,跟User一對一管理 from django.contrib.auth.models import User class UserDetail(models.Model): phone=models.CharField(max_length=32) # 一對一跟auth_user表作關聯 # 若是是從外部引入的表模型,是不能加引號的 # 若是加引號,只是在當前model找 user=models.OneToOneField(to=User)
方法二: 2、定義一個表模型,繼承(AbstractUser) from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): # username,password...都有 phone=models.CharField(max_length=32) sex=models.BooleanField() -在setting中配置: AUTH_USER_MODEL ='app01.UserInfo' -作數據庫遷移,之後就沒有auth_user這個表了,之後認證組件用的表就是UserInfo -原來auth中的其餘操做: -authentication -login -logout -set_password .... ---同樣用,徹底同樣 -不同的地方: 若是以前用到User這個表模型的地方,都換成UserInfo
1 需求分析 首頁(顯示文章) 文章詳情 點贊,點踩 文章評論 字評論 評論的展現 登陸功能(圖片驗證碼) 註冊功能(基於form 驗證,ajax) 我的站點(不一樣人不一樣樣式,文章過濾) 後臺管理: 文章展現 新增文章 富文本編輯器 2 設計程序(框架,數據庫設計) -UserInfo----用戶表 -blog-----我的站點表 -Article----文章表 -commit----評論表 -upanddown----點贊點踩表 -category---文章分類表 -tag---文章標籤表 -表關係 -userInfo跟blog ---- 一對一 -article跟blog-----一對多 -article跟category----(一篇文章只能由一個分類,一個分類下有多篇文章)一對多 -article跟tag----(一個標籤能夠對應多篇文章,一篇文章能夠有多個標籤)多對多 -commit跟Article---- 一對多 -upanddown跟Article---- 一對多 -user跟commit---一對多 -user跟upanddown---一對多 -category跟blog----一對多 -tag跟blog----一對多 3 分任務開發(git) 4 測試 5 上線