Ожидаемый str, байты или os.PathLike объект, а не pisaContext

Demo Django спросил: 28 апреля 2018 в 09:33 в: python

Я пытаюсь отправить PDF по электронной почте:

def render_to_pdf(template_src, context_dict={}):
    template = get_template(template_src)
    html = template.render(context_dict)
    result = BytesIO()
    pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
    if not pdf.err:
        return pdf
    return None

в моих представлениях:

pdf = render_to_pdf('expenses/pdf_report.html', data)
mail.attach_file(pdf)
mail.send()

Я получаю эту ошибку:

ожидаемый объект str, bytes или os.PathLike, а не pisaContext

Как я могу получить str или байты вместо


1 ответ

Есть решение
Anjaneyulu Batta ответил: 28 апреля 2018 в 09:50

попробуйте ввести код ниже. не проверен, но он должен работать

from django.template.loader import render_to_stringdef render_to_pdf(template_src, context_dict={}):
    html = render_to_string(template_src, context_dict)
    result = BytesIO()
    pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
    if not pdf.err:
        return result.getvalue()
    return None

Ссылка: https://github.com/codingforentrepreneurs/Guides/blob/master/all/Render_to_PDF_in_Django.md

Anjaneyulu Batta ответил: 28 апреля 2018 в 09:59
добавить полный ответ