Почему я получаю эту ошибку "cannot unpack non-iterable bool object"?
я получаю эту ошибку "cannot unpack non-iterable bool object", когда я пытаюсь получить пользовательский ввод из формы в 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", "eliaakjtrnq@gmail.com",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",
'eliaakjtrnq@gmail.com',
recepient_list,
fail_silently=False,
)
recepient_list.clear()