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

Django返回reverse结果报错:'str'对象无'get'属性

解决Django视图返回reverse字符串导致的AttributeError错误

问题现象

尝试通过键获取布尔值,值为True时程序正常,值为False时触发错误:AttributeError: 'str' object has no attribute 'get',从数据库取数据时也频繁遇到该问题。

核心代码

if model.check_login(request):
    ad = User.objects.get(UID=login_user_uid(request))
    per = {"perto": False}
    status = per['perto']
    print(f'sdf {type(status)}')
    print(f'sdf {status}')
    if per['perto'] is True:
        return render(request, "users/add_user.html", {})
    else:
        return reverse('home')
else:
    return redirect(reverse('login'))

程序输出

sdf <class 'bool'>
sdf False
Internal Server Error: /add_user
Traceback (most recent call last):
  File "C:\workstation\amon_env\envo\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "C:\workstation\amon_env\envo\Lib\site-packages\django\utils\deprecation.py", line 136, in __call__
    response = self.process_response(request, response)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\workstation\amon_env\envo\Lib\site-packages\django\middleware\clickjacking.py", line 27, in process_response
    if response.get("X-Frame-Options") is not None:
       ^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'

错误截图

错误截图

问题根源

Django视图要求必须返回HttpResponse对象(或其子类,如redirect()返回的HttpResponseRedirect),而reverse()函数仅返回URL路径的字符串。当视图返回字符串时,后续中间件(如点击劫持防护中间件)会尝试调用响应对象的get()方法处理响应头,但字符串类型没有该方法,因此触发AttributeError。

该问题和布尔值的获取逻辑无关,只是刚好在布尔值为False的分支中执行了错误的返回逻辑。

解决方案

将return reverse('home')替换为redirect(reverse('home')),或者更简洁的写法return redirect('home')(redirect()可以直接接受URL名称,内部会自动调用reverse()生成路径):

修改后的代码片段:

if per['perto'] is True:
    return render(request, "users/add_user.html", {})
else:
    return redirect('home')  # 替换原return reverse('home')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:32:19