django的核心在於中介軟體middleware,django所有的請求、返回都由中介軟體來完成。
中介軟體,就是處理http的request和response的,類似外掛程式,比如有request中介軟體、view中介軟體、response中介軟體、exception中介軟體等,
middleware都需要在 「project/settings.py」 中 middleware_classes 的定義。大致的程式流程圖如下所示:
圖1. django 請求處理流程圖
首先,middleware需要在 「project/settings.py」 中 middleware_classes註冊, 乙個http請求,將被這裡指定的中介軟體從頭到尾處理一遍,暫且稱這些需要挨個處理的中介軟體為處理鏈,如果鏈中某個處理器處理後沒有返回response,就把請求傳遞給下乙個處理器;如果鏈中某個處理器返回了response,
直接跳出處理鏈由response中介軟體處理後返回給客戶端,可以稱之為短路處理。
2. 操作事件的記錄
如圖1所示,我們自定義中介軟體」
recordeventmiddleware
「,分別在「入口記錄」和「出口記錄」處對每個請求的ulr進行過濾;
請求的url在request中對應欄位是: request.meta['
request_uri
'],web當前登入使用者對應字段:
request.user
,操作記錄中我們呢將其定義為事件的操作者。解析出請求或者請求處理結果後,將其插入資料庫,完成記錄,查詢自然就是讀取資料庫咯。
2.1 入口記錄: def process_view(self, request, view, args, kwargs) :
匹配到我們需要記錄的請求的url後,讀取請求的具體內容, 對應欄位是:request.body; 它的格式是純文字字串,我們約定的引數格式是json串,
此處作json串解析(json.loads(request.body)),得到引數字典。
然後具體需要記錄啥引數,就解析啥引數。
2.2 出口記錄: def process_response(self, request, response) :
同樣根據request的url欄位進行過濾,我們的response內容也是json格式,類似於request的內容字段,它的內容欄位是response.content
,同樣需要作json串解析: json.loads(response.content)。
我們約定的response包含乙個success關鍵字,標記請求是否成功,另外如果請求處理失敗,message關鍵字對應的給出了失敗原因,還有就是可能包括一些必要的
返回結果。
Django框架中ORM單錶操作
orm 物件關係對映 模式是一種為了解決物件導向與關聯式資料庫存在的互不匹配的現象的技術。首先,在model裡邊建立類 class usergroup models.model 部門 3 title models.charfield max length 32 class userinfo mode...
django框架自定義使用者表操作示例
程式設計客棧django中已經給我生成預設的user表,其中的字段已經可以滿足我們的日常需求。但有時候,我們需要更多的字段,我們就可以自定義。來替換django自帶的user表。models.py from django.contrib.auth.models import abstractuser...
CVS新增使用者操作
1.建立乙個使用者 useradd weijun 2.給使用者設定密碼 linux命令 passwd weijun 3.檢視 etc shadow 檔案內容 找出類似 dev 1 mthywktw iy4vwiyttx4kc3cd0hudf1 13626 0 99999 7 第乙個 與第二個 之間的...