Django reportlabs未返回HttpResponse对象

2 投票
1 回答
523 浏览
提问于 2025-04-17 08:30

我正在尝试使用reportlabs生成一个PDF文件,但遇到了一个错误:The view APP.VIEW didn't return an HttpResponse object.

这个函数和视图运行时没有任何异常,甚至这行代码return HttpResponse(result.getvalue(), mimetype='application/pdf')也没有问题。但我还是一直收到这个错误。

下面是我的代码:

def render_to_pdf(template_src, context_dict):
    """Function to render html template into a pdf file"""
    template = get_template(template_src)
    context = Context(context_dict)
    html  = template.render(context)
    result = StringIO.StringIO()

    pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result)
    if not pdf.err:
        return HttpResponse(result.getvalue(), mimetype='application/pdf')
    return HttpResponse('We had some errors<pre>%s</pre>' % escape(html))

视图部分:

def invoice_pdf(request, inv_no):
    try:

        inv = BC_Invoice.objects.select_related().get(invoice_no=inv_no)

        render_to_pdf('bc_invoice_pdf.html', {'pagesize': 'A4',
                                          'inv': inv}
                                          )

    except Exception, e:
        pass
        HttpResponse(None)

1 个回答

2

你没有从视图中返回任何东西。你不能只是调用render_to_pdf或者HttpResponse,你实际上需要把结果返回出去。

撰写回答