Django之auth組件

1、Auth模塊是什麼

  django內置的用戶認證系統 ,能夠快速 的實現,登陸,註銷,修改密碼...python

2、Auth用法:

  一、先建立超級用戶 :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

3、博客項目 

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 上線
博客項目
相關文章
相關標籤/搜索