我收到此错误“无法解压不可迭代的布尔对象”,因为我尝试从 django 中的表单获取用户输入,在本例中是一封电子邮件
def send_email(request):
recepient_list=[]
if request.method == "POST":
email = request.POST['pwd_email']
print(email)
if User.objects.filter(email == email).exists:
recepient_list.append(email)
send_mail("PASSWORD RESET", f"Your password resetkey is {random_no} \n Do not share this key with anyone", "[email protected]",recepient_list,fail_silently=False,)
recepient_list.clear()
我认为给您带来一些麻烦的线路是:
if User.objects.filter(email == email).exists:
我看到两个问题:
eixsts()
是一种方法,而不是属性,因此您需要包含“()”尝试将该行更改为:
if User.objects.filter(email=email).exists():
并查看错误是否仍然存在。
这里有几个问题,最主要的是
.filter(email == email)
。这将检查字符串是否等于其自身,因此总是 True
,因此您使用 .filter(True)
,Django 当然不能对 bool
做太多事情。
您应该过滤:
def send_email(request):
recepient_list = []
if request.method == 'POST':
email = request.POST['pwd_email']
print(email)
# ***call*** .exists() 🖟
if User.objects.filter(email=email).exists():
recepient_list.append(email)
send_mail(
'PASSWORD RESET',
f"Your password resetkey is {random_no} \n Do not share this key with anyone",
'[email protected]',
recepient_list,
fail_silently=False,
)
recepient_list.clear()