django的生命周期是:前端請求--->nginx--->uwsgi.--->中間件--->url路由---->view試圖--->orm---->拿到數據返回給view---->試圖將數據渲染到模版中拿到字符串---->中間件--->uwsgi---->nginx---->前端渲染。
今天就不講其他內容,今天就講中間件的內容,中間件的作用非常大,可以處理所有的請求內容,中間件其實就是一個類,這個類中一共有5個方法,分別是process_request, process_response,process_view, process_exception,process_render_template,今天就講講他的運行順序。
當一個請求,首先從上往下運行這些類中process_request方法,之后進入django的從上往下執行每個類中的process_view方法,在然后就進入我們自定義的view.py文件,如果你的試圖中有錯誤,那就會從下往上執行中間件中的process_exception方法,然后把錯誤信息在通過process_response中返回給客戶端。
process_request:在這個方法中是沒有return方法的,如果有那就會執行process_response方法,直接返回給客戶端,一般情況下我們是不會在這里返回內容的,除非你有需求,判斷發過來的請求過來的內容,如果不是很友好的請求,那么我們直接就可以在這返回,直接卡死,讓這個請求直接都進不了我們的django中的內部程序,
process_response:在這個方法中我們必須要有return方法,這樣才能一步一步的返回給客戶端,當然你也可以寫一些東西在response里,在這里寫就是會在所有的response里都會有你所添加的內容!
process_view:這個方法中是沒有return方法的,如果有那就走process_response方法;
process_exception:在這個方法中是一定要有return方法的,這個方法是專門返回你的錯誤信息的,我可以在所有的視圖函數只要出現錯誤就會執行這個方法,可以返回一個錯誤模版信息!
原文:https://blog.csdn.net/zhoulin753/article/details/80457355