middleware中间件__init__方法报错的解决办法

 从Django 1.9工程移过来的中间件功能,到Django1.11突然不可用了?

TypeError: __init__() takes 1 positional argument but 2 were given

middleware中间件__init__方法报错的解决办法_第1张图片

原来是中间件的初始化出现了问题。

赶紧查查Django1.11的文档

middleware中间件__init__方法报错的解决办法_第2张图片

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方法。


middleware中间件__init__方法报错的解决办法_第3张图片

Django 1.11的官网文档:https://docs.djangoproject.com/en/dev/topics/http/middleware/

Django1.9 讲的很清楚的中间件功能:https://www.cnblogs.com/felo/p/5600549.html

你可能感兴趣的:(middleware中间件__init__方法报错的解决办法)