Я работаю над приложением django, и у меня есть форма, содержащая несколько полей, я могу получить значения полей через файл views.py, и когда я просто заполняю поля в engli sh, все работает как шарм но в случае моего приложения мне нужно заполнить их в арабском c. Когда я пытался сделать это и посмотреть, работает ли он так же, я получил сообщение об ошибке ниже на моем экране:
UnicodeEncodeError at / 'ascii' code c не может кодировать символы в позиции 24-27: порядковый номер не в диапазоне (128)
Это мой код:
def index(request):
if request.POST.get('sendEmail'):
pname = request.POST.get('patient_name')
cr = request.POST.get('city_region')
mz = request.POST.get('mazq')
hno = request.POST.get('house_no')
yn = request.POST.get('your_name')
mob = request.POST.get('mobile')
if (pname != '' and cr != '' and mz != '' and hno != '' and yn != ''):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.connect("smtp.gmail.com",587)
server.starttls()
server.login(username, password)
FROM = yn
print(FROM)
TO = ["alisattarbarani@gmail.com"]
SUBJECT = "New Subject"
TEXT = pname + "\n" + cr + "\n" + mz + "\n" + hno
ms = 'Subject: {}\n\n{}'.format(SUBJECT, TEXT + '\n' + '\n' + FROM)
server.sendmail(FROM, TO, ms)
server.quit()
msg = "Successfull Email"
return render(request, "index.html", {"msg": msg})
msg = "Empty Fields!"
return render(request, "index.html", {"msg": msg})
return render(request, "index.html")
Я сделал много изменений в своем коде, и одна из них кодировала две переменные ОТ и ТЕКСТ но это тоже не сработало, поэтому я решил сделать это как показано ниже:
FROM = str(yn.encode('utf-8'))
TEXT = str(pname.encode('utf-8')) + '\n' + str(cr.encode('utf-8')) + '\n' + str(mz.encode('utf-8')) + '\n' + str(hno.encode('utf-8'))
и это сработает, потому что если я опущу str () будет возвращено: Строка не может объединять байты , поэтому я так и сделал. Я проверил свой почтовый ящик gmail и получил на картинке следующие байты:
Как вы можете видеть, заполняю ли я свою форму на английском языке sh все будет хорошо, вместо этого он не работает с араби c.
Любая помощь будет оценена, спасибо заранее