2011-12-16 74 views
2

我想使用reportlabs生成pdf並遇到The view APP.VIEW didn't return an HttpResponse object.錯誤。Django reportlabs沒有返回HttpResponse對象

函數和視圖運行時沒有任何例外,即使是行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) 

回答

2

不必返回什麼從視圖。你不能只打電話render_to_pdfHttpResponse - 你實際上必須返回結果。

+0

我很抱歉,但我不太明白,你能舉一個例子說明我可以如何糾正嗎?我認爲在函數調用中返回HttpResponse()已經返回它? – 2011-12-16 15:16:45

相關問題