Django开发简单Hi应用访问/hi/路由报__init__()参数不匹配错误
Django访问
/hi/路径报错修复方案 报错触发的核心原因
__init__() takes 1 positional argument but 2 were given报错的本质是类实例化时,传入的位置参数数量超出了类构造方法的定义要求。对照代码,问题全部出在视图的返回逻辑上:
HttpRequest是Django内置的请求封装类,作用是承接客户端发送的请求信息,由框架自动初始化并作为第一个参数传给视图函数,该类的构造方法仅接收self,不支持传入任何自定义位置参数。- 视图代码中
return HttpRequest('Hi.')的写法,会主动调用HttpRequest的构造方法并多传入一个字符串参数'Hi.',直接触发构造函数参数不匹配的报错。 - 附带逻辑错误:Django视图强制要求返回值必须是
HttpResponse及其子类的实例,HttpRequest是请求对象,本身无法作为响应返回给客户端。
具体修复步骤
- 调整
views.py的导入与返回逻辑:把错误导入的HttpRequest替换为对应的响应类HttpResponse,修正后视图代码为:# hi/views.py from django.http import HttpResponse def hiView(request): # HttpResponse 构造方法支持传入文本作为响应主体 return HttpResponse('Hi.') - 现有路由配置无需修改:在
urls.py中将函数视图hiView绑定到/hi/路径的写法,完全符合Django的路由规则。 - 应用注册配置无需调整:已经在
settings.py的INSTALLED_APPS中完成hi应用的注册,配置正确。
效果验证
保存修改后重启Django开发服务器,再次访问/hi/路径,页面即可正常返回Hi.的文本内容,报错会直接消失。
内容的提问来源于stack exchange,提问作者nakinfk
相关产品推荐
相关产品推荐

