搭建用webpack開發react專案的腳手架
阿新 • • 發佈:2022-05-07
Django(十一)
csrf相關裝飾器
# 在後端檢視層可以加裝飾器實現開啟,關閉csrf校驗 from django.views.decorators.csrf import csrf_exempt,csrf_protect """ csrf_exempt 忽略csrf校驗 csrf_protect 開啟csrf校驗 """ # 針對FBV @csrf_protect\@csrf_exempt def login(request): return render(request,'login.html') # 針對CBV csrf_protect 三種CBV新增裝飾器的方式都可以 csrf_exempt 只有一種方式可以生效(給重寫的dispatch方法裝)
基於中介軟體思想編寫專案
# 通過字串形式匯入模組 importlib模組 eg: import importlib res = 'test' ret = importlib.import_module(res) print(ret) '''匯入的最小單位是py檔案''' '''以傳送提示資訊為需求 編寫功能''' 方式1:封裝成函式 方式2:封裝成配置 import settings import importlib # 1.獲取配置資訊 for i in settings.MODEL_URLS: # 2.地址拆分 model_path,class_name = i.rsplit('.') # 3.匯入模組 res = importlib.import_module(model_path) # 4.利用反射獲取類 class_name_str = getattr(res,class_name) # 5.例項化物件 obj = class_name_str() # 6.呼叫函式 obj.send(f'{class_name}:你好啊')
auth認證模組
# django提供給你快速完成使用者相關功能的模組
使用者相關功能:建立、認證、編輯...
# django也配套提供了一張'使用者表'
執行資料庫遷移命令之後預設產生的auth_user
# django自帶的admin後臺管理使用者登入參考的就是auth_user表
建立admin後臺管理員使用者:run manage.py task>>:createsuperuser
自動對使用者密碼進行加密處理並儲存
auth模組方法大全
from django.contrib import auth # 1.驗證使用者名稱和密碼是否正確 auth.authenticate() '''校驗正確返回使用者物件,錯誤返回None''' # 2.儲存使用者登入狀態 auth.login() '''自動記錄session''' # 3.獲取當前使用者物件 request.user ''' 如果有使用者登入返回使用者物件 沒有登入返回AnonymousUser ''' # 4.判斷當前使用者是否登入 request.user.is_authenticated() '''登入返回Ture,沒登入返回False''' # 5.校驗登入裝飾器 from django.contrib.auth.decorators import login_required '''沒有使用者登入預設跳轉到/accounts/login/頁面,也可以自己定義''' # 區域性配置 @login_required(login_url='/login/') # 全域性配置 @login_required LOGIN_URL = '/login/' # 需要在配置檔案中新增配置 # 6.修改密碼 request.user.check_password() # 比較原密碼是否正確,自動加密再比較 request.user.set_password() # 修改密碼 request.user.save() # 儲存資料 # 7.登出登入 auth.logout(request) # session失效 # 8.註冊使用者 from django.contrib.auth.models import User User.objects.create_superuser() # 註冊超級管理員 User.objects.create_user() # 註冊普通使用者
auth擴充套件表字段
# 方式1:編寫一對一表關係(瞭解)
# 方式2:類繼承(推薦)
from django.contrib.auth.models import AbstractUser
class Users(AbstractUser):
# 編寫AbstractUser類中沒有的欄位 不能衝突!!!
phone = models.BigIntegerField()
addr = models.CharField(max_length=32)
AUTH_USER_MODEL = 'app01.Users'
"""
1.類繼承之後 需要重新執行資料庫遷移命令 並且庫裡面是第一次操作才可以
2.auth模組所有的方法都可以直接在自定義模型類上面使用
自動切換參照表
"""