从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
网友评论