2011-12-16 4 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_pdf 또는 HttpResponse으로 전화 할 수는 없습니다. 실제로 결과를 반환해야합니다.

+0

죄송하지만 이해가되지 않습니다. 어떻게 해결할 수 있습니까? 함수 호출에서'return HttpResponse()'가 이미 그것을 반환했다고 생각 했습니까? –

+0

호출 뷰에 반환합니다 (예). 하지만 거기에서 어떻게됩니까? –

+1

와우 나는 바보 야 ... 고마워. –

관련 문제