django之auth模塊

django之auth模塊

'''
今天傻逼了,整理了好久的筆記,結果由於更新了navigate,忘記保存重啓,內存清空,數據都丟了,因此我先把今天所學的知識,大致講一下,週末再具體進行補充。
'''


#auth模塊主要就是圍繞用戶表,完成用戶登陸註冊,修改密碼,添加字段等做用的,能夠加語法糖,全局,局部配置, 

#而後能夠用auth模塊能夠對字段進行擴充,就是繼承,再加個配置





1.auth模塊
    用auth模塊 你就用全套 不是本身寫一部分 用別人一部分


    如何建立超級用戶 用於登陸django admin的後臺管理
        createsuperuser
        
    校驗用戶是否存在
        user_obj = auth.authenticate(username=username,password=password)  
        # 返回的是數據對象  沒有返回None
    保存用戶登陸狀態
        auth.login(request,user_obj)  
        # 執行完這一句以後 只要是可以拿到request的地方 
        # 均可以經過request.user獲取到當前登陸用戶對象
    判斷當前用戶是否登陸
        request.user.is_authenticated()
    獲取當前用戶數據對象
        request.user
    如何給視圖函數加上校驗用戶是否登陸的校驗
        from django.contrib.auth.decorators import login_required
        # @login_required(login_url='/xxx/')  # 局部配置
        @login_required  # 全局配置
        def home(request):
            return HttpResponse('home頁面')
            # 當用戶沒有登陸的狀況下 跳轉的url有兩種配置方式
            1.在裝飾器括號內經過login_url參數局部指定
            
            2.全局配置  用戶沒有登陸的狀況下 全部的視圖統一跳轉到一個url
            配置文件中
                LOGIN_URL = '/login/'
    修改密碼
        校驗原密碼是否正確
            is_right = request.user.check_password(old_password)
        設置新密碼
            request.user.set_password(new_password)
            request.user.save()
    
    
    用戶註冊
        from django.contrib.auth.models import User
        User.objects.create(username=username,password=password)  
        # 不用使用create 密碼會直接存成明文
        User.objects.create_user(username=username,password=password)  
        # 建立普通用戶
        User.objects.create_superuser(
                        username=username,password=password,
                        email='123@qq.com')  
        # 建立超級用戶  郵箱字段必須填寫
    
    
    
    擴展auth_user表的字段
        第一種(很差用)
            利用一對一表關係 擴展字段
        
        第二種(繼承)
            1.本身寫一個默寫類 繼承原來的auth_user類 而後在settings配置文件中 告訴django使用你新建的類來替代auth_user表
            from django.db import models
            from django.contrib.auth.models import AbstractUser
            # Create your models here.

            class Userinfo(AbstractUser):
                """
                強調 你繼承了AbstractUser以後 你自定義的表中 
                字段不能跟原有的衝突
                """
                phone = models.BigIntegerField()
                avatar = models.FileField()
                register_time = models.DateField(auto_now_add=True)
            2.必定要在settings配置文件中指定
                AUTH_USER_MODEL = 'app01.Userinfo'
                # 固定語法: AUTH_USER_MODEL = '應用名.表名'
            
            """
            經過上面的方式 繼承的表 還能夠繼續使用auth模塊全部的功能
            """
        
        舒適提示 當你須要些用戶相關的功能的時候能夠考慮使用auth模塊

更多介紹請戳 Auth認證模塊html

自定義中間件的配置

"""
思路:
    首先,中間件就是一個多重防護的保安,對內能夠實現全局的操做,對外能夠根據須要篩選請求,基於前一個功能,咱們自定義了一箇中間件,主要功能就是要 暫停某個功能的使用,只須要在配置文件中註釋掉相關的模塊語句就能夠了(就像以前的csrf同樣)
"""

代碼連接自定義中間件python

相關文章
相關標籤/搜索