Я работаю над проектом с использованием Python (3.6) и Django (2.1), в котором мне нужно конвертировать HTML-шаблон в pdf, используя WeasyPrint
и отправьте его как вложение с электронным письмом.
Примечание: Я пробовал много решений, таких как обновление .bash_profile и многих других решений, но не смог решить эту проблему, поэтому не помечайте это как дублированный, пожалуйста! Кроме того, я могу предоставить любую необходимую информацию относительно моего вопроса и кода, для этого просто оставьте комментарий, пожалуйста!
Вот что я попробовал:
С views.py
:
user_infor = ast.literal_eval(ipn_obj.custom)
user_info = {
"name": user_infor['name'],
"hours": user_infor['hours'],
"taggedArticles": user_infor['taggedArticles'],
"email": user_infor['email'],
"date": user_infor['date'],
}
html = render_to_string('users/certificate_template.html',
{'user': user_info})
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'filename=certificate_{}'.format(user_info['name']) + '.pdf'
pdf = weasyprint.HTML(string=html, base_url='http://8d8093d5.ngrok.io/users/process/').write_pdf(
stylesheets=[weasyprint.CSS(string='body { font-family: serif}')])
to_emails = [str(user_infor['email'])]
subject = "Certificate from Nami Montana"
email = EmailMessage(subject, body=pdf, from_email=settings.EMAIL_HOST_USER, to=to_emails)
email.attach("certificate_{}".format(user_infor['name']) + '.pdf', pdf, "application/pdf")
email.content_subtype = "pdf" # Main content is now text/html
email.encoding = 'us-ascii'
email.send()
Но он возвращает эту ошибку:
Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/locale.py", строка 495, в _parse_localename
повышение ValueError («неизвестная локаль:% s»% локаль)
Ошибка значения: неизвестная локаль: UTF-8
И он указывает на строку, куда я импортировал weasyprint
как:
import weasyprint