1. 程式人生 > >django框架的基礎知識點《柒》

django框架的基礎知識點《柒》

在實際開發工作中,我們使用django開發之前,需要對django配置檔案進行簡單的設定:

1.sys.path     2. mysql資料庫的配置     3.快取的配置     4.session的配置       5. 日誌       6.異常處理    

相關的命令:      建立資料庫:create database  資料庫名稱 charset=utf8;

            建立使用者:    create user yong  使用者名稱 identified by 密碼             

            授權:            grant  all on 資料庫名稱 to 使用者名稱 @ ‘%’(%是指訪問任意一臺主機)

             重新整理許可權:    flush privileges

當在開發過程中,不可避免的要進行跨域訪問,為了能解決跨域訪問,可以安裝第三方包:

1.pip install django-cors-headers
2. 在settings.py配置檔案中安裝應用:INSTALLED_APPS=【
                            ...,
                            
                          'corsheaders',

                          ...  
                          】
3.在中介軟體的第一項(必選在第一項)加上
        ‘corsheaders.middleware.CorsMiddleware’,
          ...
4.設定白名單:
        凡是出現在白名單中的域名,都可以訪問後端介面
      # 配置cors的白名單: CORS_ORIGIN_WHITELIST=(WWW.***.site:8080)  
       CORS_ALLOW_CREDENTIALS 指明在跨域訪問中,後端是否支援對cookie的操作
      # CORS_ALLOW_CREDENTIALS = True  # 允許攜帶cookie

5.設定當前網站的域名:
ALLOWED_HOSTS = [
'api.meiduo.site',
]
====================定義使用者模型類
在django做貢獻的認證系統基礎上,進行開發
預設屬性:使用者名稱、密碼、郵箱
1.class User(AbstractUser):
擴充套件自己的屬性
2.配置,指定自己的類為認證型別
AUTH_USER_MODEL='應用.型別User'
====================簡訊驗證碼
1.判斷是否已經發過,發過則拋異常
2.如果未發過,則隨機生成
3.存入redis
驗證碼
傳送標記
4.傳送(雲通訊)
5.響應
====================celery
當使用框架,沒有進行程序、執行緒程式碼開發時,可以使用celery將一個函式在其它的執行緒中執行
任務task:一個耗時的函式===================>開發人員封裝的函式,定義了耗時的程式碼
佇列queue:儲存任務的地方==================>redis,儲存要執行的函式的名稱
代理人broker:接收通知,將任務加入佇列=====>呼叫者,任務函式.delay()
工人worker:從佇列中讀取任務,執行=========>新的程序
====================使用celery發簡訊
1.複製配置(複製)
2.自定義任務
建立包
建立tasks.py
定義函式
新增裝飾器@app.task
在main.py中設定包,用於自動識別任務
3.呼叫
函式.delay(引數)
4.啟動工人(啟動celery服務)
celery -A celery_tasks.main worker -l info

在使用者註冊或登入後,我們想記錄使用者的登入狀態,或者為使用者建立身份認證的憑證。我們不再使用Session認證機制,而使用Json Web Token認證機制:

====================jwt
保持登入狀態:
session
token
jwt的格式:
字串1.字串2.字串3
header.payload.signature
header====>指明加密的方式{}=======>base64===>
payload===>資料庫
signature=>有效性驗證
====================在drf中使用jwt
1.

pip install djangorestframework-jwt


2.在配置檔案settings.py中指定drf認證方式

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ),
}

JWT_AUTH = {
    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1), }


3.生成token
payload=payload處理器(user)
token=encode處理器(payload)
user.token=token