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

Django运行报contact() got an unexpected keyword argument 'name'错误原因?

问题原因

报错由命名冲突导致:

  • 你从home.models导入的模型类名称为contact
  • 同时当前views.py中的视图函数也命名为contact
    在视图函数内部调用contact()时,Python会优先匹配当前作用域下的视图函数,而非导入的模型类。视图函数仅接收request一个位置参数,你传入name、email等关键字参数自然会触发类型错误。
解决方法

任选以下任意一种方案即可修复:

方案1:给导入的模型设置别名

修改导入模型的代码,避免和视图函数重名:

# 将原导入代码 from home.models import contact 替换为以下内容
from home.models import contact as ContactModel

同步修改实例化模型的代码:

ins = ContactModel(name=name,email=email,phone=phone,desc=desc)

方案2:修改视图函数的名称

将视图函数重命名为和模型不冲突的名称,例如contact_view,如果urls.py中绑定了该视图的路由,需要同步修改路由对应的函数名:

def contact_view(request):
    if request.method=="POST":
        name=request.POST['name']
        email=request.POST['email']
        phone=request.POST['phone']
        desc=request.POST['desc']
        ins=contact(name=name,email=email,phone=phone,desc=desc)
        ins.save()
        print('the data has been written to the db')
        
    return render(request, 'contact.html')

额外规范建议:Python社区默认类名采用大驼峰命名法,你可以将模型类名改为Contact,从根源上避免和小写命名的函数、变量发生冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 05:06:05