预期的str,bytes或os.PathLike对象,而不是pisaContext

时间:2018-05-22 11:13:58

标签: python django

我试图通过电子邮件发送PDF:

**Expected Output**
BusName   | tripFrom | tripTo | Departure | Arrival 
Sprinter     101          104    1:00:00    2:30:00    
VVIP Bus     101          104    2:30:00    3:15:00 

在我的观看

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

我收到此错误:

  

期望str,bytes或os.PathLike对象,而不是pisaContext

如何获得str或字节而不是pdf = render_to_pdf('expenses/pdf_report.html', data) mail.attach_file(pdf) mail.send()

1 个答案:

答案 0 :(得分:1)

尝试以下代码。未经测试但应该可以使用

from django.template.loader import render_to_string

def 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