1. 程式人生 > 其它 >django之csrf、auth認證模組、bbs

django之csrf、auth認證模組、bbs

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.文章評論表
	文章、使用者、評論內容、評論時間