You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django视图返回HttpRequest触发TypeError:__init__()参数不匹配

解决Django 2.0中TypeError: init() takes 1 positional argument but 2 were given的问题

嘿,我一眼就瞅出问题所在了——你在视图函数里犯了个典型的新手错误:返回了HttpRequest对象,但这根本不是视图该返回的东西!

错误原因拆解

Django的视图函数逻辑是这样的:

  • Django会把用户的请求包装成HttpRequest实例,作为参数传给你的视图函数(就是你写的request参数)
  • 而视图函数的职责是处理这个请求,然后返回一个响应对象,也就是HttpResponse(或它的子类,比如JsonResponse)

你现在返回HttpRequest('Hello Ahmed'),相当于错误地实例化了请求对象,而HttpRequest的构造函数在Django 2.0里需要的参数不止你传的这一个,所以才会抛出这个“参数不匹配”的TypeError。

修正后的代码

第一步:修正views.py

你需要导入HttpResponse,然后返回这个响应对象:

from django.http import HttpResponse  # 必须导入这个!

def index(request):
    return HttpResponse('Hello Ahmed')

第二步:确认urls.py配置

你的urls.py配置是完全正确的,不用修改:

from django.contrib import admin
from django.urls import path
from first_app import views

urlpatterns = [
    path('', views.index, name='index'),
    path('admin/', admin.site.urls),
]

最后一步

重启你的Django开发服务器,再访问http://127.0.0.1:8000/,就能正常看到"Hello Ahmed"的输出啦!

内容的提问来源于stack exchange,提问作者Roma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:24:23