?從Django 1.9工程移過來的中間件功能,到Django1.11突然不可用了?
TypeError: __init__() takes 1 positional argument but 2 were given
原來是中間件的初始化出現了問題。
趕緊查查Django1.11的文檔
Django1.10版本前:
一 個 middleware 類可以包括請求響應過程的四個階段:request,view,response 和 exception。對應的成員函數:process_request,process_view, process_response 和 process_exception。其中初始化的 __init__初始化函數不需要傳參。
Django1.10版本后:
一 個 middleware 類只有一個成員變量get_response,兩個成員函數__init__,__call__。
?get_response是__init__時的初始化時的必要參數,在整個訪問中只調用1次,__call__執行主要的功能。
可在__call__中調用之前實現的process_request或者process_response方法。
Django 1.11的官網文檔:https://docs.djangoproject.com/en/dev/topics/http/middleware/
Django1.9 講的很清楚的中間件功能:https://www.cnblogs.com/felo/p/5600549.html