#路由匹配
if hasattr(request, '
urlconf'):
urlconf =request.urlconf
set_urlconf(urlconf)
resolver =get_resolver(urlconf)
else
: resolver =get_resolver()
resolver_match =resolver.resolve(request.path_info)
#這個callback就是我們的檢視函式, 後兩個是檢視函式可能需要的引數
callback, callback_args, callback_kwargs =resolver_match
request.resolver_match =resolver_match
#應用 view middleware 中介軟體
for middleware_method in
self._view_middleware:
response =middleware_method(request, callback, callback_args, callback_kwargs)
#只要有response返回, 就立刻停止遍歷
ifresponse:
break
if response is
none:
#給檢視函式包裝一層
try:
#這裡是呼叫檢視函式
except
exception as e:
#有異常就進入exception view處理
response =self.process_exception_by_middleware(e, request)
#這個不常用的process_template_response功能, 看原始碼可以清楚的知道為什麼
#返回的結果為啥需要有render方法了
elif hasattr(response, '
render
') and
callable(response.render):
for middleware_method in
self._template_response_middleware:
response =middleware_method(request, response)
#...
try:
response =response.render()
except
exception as e:
response =self.process_exception_by_middleware(e, request)
return response
Django 中介軟體
django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的執行過程如下圖所示 django在中介軟體中預置了五個方法,這五個方法的區別在於不同的階段執行,對輸入或輸出進行干預,方法如下 def init self pa...
Django中介軟體
給檢視函式加裝飾器判斷使用者是否登入,把沒有登入的請求跳轉到登入頁面,我們通過給幾個特定檢視函式加裝飾器實現了這個需求,但是這樣做比較繁瑣,用django中的中介軟體會比較簡潔 什麼是中介軟體 中介軟體是幫助我們再檢視函式執行之前和執行之後都可以做一些額外的操作,它本質上就是乙個自定義類,類中定義了...
Django中介軟體
什麼是中介軟體?django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的設計為開發者提供了一種無侵入式的開發方式,增強了django框架的健壯性。我們可以使用中介軟體,在django處理檢視的不同階段對輸入或輸出進行...