django之csrf、auth認證模組、bbs
阿新 • • 發佈:2022-05-25
django之csrf、auth認證模組、bbs
- csrf相關裝飾器
- 基於中介軟體思想編寫專案
- auth認證模組
- bbs專案分析
- bbs專案表設計
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模組 可以通過字串的形式匯入模組 # 常規匯入方式 # from ccc import b # print(b) # <module 'ccc.b' from '/Users/jiboyuan/PycharmProjects/day61_1/ccc/b.py'> # print(b.name) # 字串匯入方式 # import importlib # module_path = 'ccc.b' # res = importlib.import_module(module_path) # print(res.name) from ccc.b import name # 可以直接導變數資料 import importlib module_path = 'ccc.b.name' importlib.import_module(module_path) # 不可以 最小匯入單位是模組檔案級別 '''以傳送提示資訊為需求 編寫功能''' 方式1:封裝成函式 方式2:封裝成配置 import settings import importlib def send_all(msg): # 1.迴圈獲取配置檔案中字串資訊 for str_path in settings.NOTIFY_FUNC_LIST: # 'notify.email.Email' # 2.切割路徑資訊 module_path, class_str_name = str_path.rsplit('.', maxsplit=1) # ['notify.email','Email'] # 3.根據module_path匯入模組檔案 module = importlib.import_module(module_path) # 4.利用反射獲取模組檔案中對應的類名 class_name = getattr(module, class_str_name) # Email Msg QQ # 5.例項化 obj = class_name() # 6.呼叫傳送訊息的功能 obj.send(msg)
auth認證模組
# django提供給你快速完成使用者相關功能的模組
使用者相關功能:建立、認證、編輯...
# django也配套提供了一張'使用者表'
執行資料庫遷移命令之後預設產生的auth_user
# django自帶的admin後臺管理使用者登入參考的就是auth_user表
建立admin後臺管理員使用者:run manage.py task>>:createsuperuser
自動對使用者密碼進行加密處理並儲存
auth模組方法大全
from django.contrib import auth # 1.驗證使用者名稱和密碼是否正確 auth.authenticate() # 2.儲存使用者登入狀態 auth.login() # 3.獲取當前使用者物件 request.user # 4.判斷當前使用者是否登入 request.user.is_authenticated() # 5.校驗登入裝飾器 from django.contrib.auth.decorators import login_required @login_required(login_url='/lg/') # 區域性配置 @login_required # 全域性配置 LOGIN_URL = '/lg/' # 需要在配置檔案中新增配置 # 6.修改密碼 request.user.check_password() request.user.set_password() request.user.save() # 7.登出登入 auth.logout(request) # 8.註冊使用者 from django.contrib.auth.models import User User.objects.create_superuser() User.objects.create_suser()
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模組所有的方法都可以直接在自定義模型類上面使用
自動切換參照表
"""
專案開發流程
1.需求分析
2.技術選型
3.分組開發
4.提交測試
5.交付上線
bbs資料表分析
"""
1.先確定表
2.再確定欄位
3.最後確定關係
"""
1.使用者表
繼承AbstractUser
2.個人站點表
站點名稱、標題、樣式
3.文章表
標題、簡介、內容、釋出時間
4.文章分類表
分類名稱
5.文章標籤表
標籤名稱
6.文章點贊點踩表
文章、使用者、贊/踩
7.文章評論表
文章、使用者、評論內容、評論時間