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

删除User对象时触发'str' object is not callable错误求助

解决删除User对象时出现的'str' object is not callable错误

这个报错通常是因为Django无法找到可调用的视图函数,或者代码里存在变量名冲突导致内置功能被意外覆盖。结合你给出的代码,我们来一步步排查和修复:

最可能的问题:URL配置错误

你大概率在urls.py里犯了一个常见错误——直接调用了视图函数(加了括号),而不是仅引用函数本身。比如错误的写法是这样的:

# 错误示例:直接执行视图函数,导致返回的响应对象被当作视图
path('employee/delete/<int:id>/', views.employe_delete(id=id), name='employe_delete')

正确的URL配置应该只传递视图函数的引用(不带括号),让Django在请求到达时再去调用它:

# 正确写法
path('employee/delete/<int:id>/', views.employe_delete, name='employe_delete')

当你给视图函数加括号时,Django会立刻执行该函数并得到一个HttpResponse对象(或字符串),但Django期望的是一个可调用的函数,因此就会抛出'str' object is not callable的错误。

次要优化点:避免用内置函数名当参数

你的视图函数用了id作为参数名,但id是Python的内置函数(用来获取对象内存地址)。虽然这不是当前报错的直接原因,但后续可能引发其他意外问题,建议改成更明确的名称,比如user_id:

def employe_delete(request, user_id=None):
    user = get_object_or_404(User, id=user_id)
    # 后续代码保持不变

同时记得同步更新urls.py里的参数名:

path('employee/delete/<int:user_id>/', views.employe_delete, name='employe_delete')

模板与视图逻辑验证

你的模板代码是没问题的:表单用了POST方法、包含{% csrf_token %},提交后能触发视图里的删除逻辑;视图中的user.delete()和重定向逻辑也都正确。只要修复好URL配置,删除操作就能正常执行。

按照上面的步骤修改后,重新测试应该就能解决这个报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:57:46