Django server启动失败:中间件加载报__init__参数错误如何解决
问题原因
这个报错是Django加载中间件阶段触发的异常,和你编写的模型、迁移操作无关,核心原因是中间件写法不匹配当前Django版本的规范,Django 1.10及以上版本重构了中间件的实现逻辑,老版本的中间件写法会触发该参数不匹配错误。
解决步骤
- 第一步:打开项目配置文件
settings.py,定位到MIDDLEWARE配置列表,排查所有非Django官方自带的自定义中间件、第三方依赖提供的中间件。 - 第二步:如果是自己写的自定义中间件,调整代码结构符合新版规范,正确示例如下:
class 你的中间件类名: def __init__(self, get_response): self.get_response = get_response # 此处写仅执行一次的初始化逻辑 def __call__(self, request): # 此处写视图执行前的处理逻辑,对应旧版的process_request方法 response = self.get_response(request) # 此处写视图执行后的处理逻辑,对应旧版的process_response方法 return response
- 第三步:如果是第三方依赖提供的中间件报错,将对应依赖升级到适配你当前Django版本的最新版即可。
- 第四步:如果你的
settings.py中还在使用旧版配置项MIDDLEWARE_CLASSES,直接将配置项名改为MIDDLEWARE即可。
修改完成后重新执行python manage.py runserver即可正常启动服务。
内容的提问来源于stack exchange,提问作者Atif Shafi
相关产品推荐
相关产品推荐

