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

Django中获取表单邮箱输入时出现“cannot unpack non-iterable bool object”错误的原因及解决方法

Django中获取表单邮箱输入时出现“cannot unpack non-iterable bool object”错误的原因及解决方法

嗨,我看了你的代码,这个错误其实是因为你踩了两个小坑,咱们一步步来解决:

问题1:Filter查询条件的写法错误

你现在写的User.objects.filter(email == email)是个布尔表达式,结果永远是True,相当于让Django返回所有用户,这不仅不是你想要的效果,还会让Django在解析查询条件时出错。正确的做法是用关键字参数指定查询字段,这样才能精准筛选出邮箱匹配的用户:

User.objects.filter(email=email)

问题2:Exists方法没调用

你写的.exists只是引用了方法本身,并没有执行查询,所以这里拿到的是方法对象而非布尔值。必须加上括号调用.exists(),这样才会触发数据库查询并返回True/False:

if User.objects.filter(email=email).exists():

修正后的完整代码

(注意还要确保random_no变量已经提前定义好哦)

def send_email(request):
    recepient_list = []
    if request.method == "POST":
        email = request.POST['pwd_email']
        print(email)
        # 修正查询条件和exists调用
        if User.objects.filter(email=email).exists():
            recepient_list.append(email)
            send_mail(
                "PASSWORD RESET",
                f"Your password reset key is {random_no} \n Do not share this key with anyone",
                "eliaakjtrnq@gmail.com",
                recepient_list,
                fail_silently=False,
            )
            recepient_list.clear()

简单解释下错误原因:当你把email == email这个布尔值传给filter时,Django无法正确解析这个非标准的查询参数,尝试解包它的时候就抛出了“cannot unpack non-iterable bool object”的错误。修正上述两处后,这个问题就彻底解决啦。

备注:内容来源于stack exchange,提问作者Man of Light

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 07:03:07