2011-12-16 3 views
2

Я пытаюсь создать pdf-файл с использованием reportlabs, и я столкнулся с ошибкой 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

ничего себе я идиот ... спасибо ... –

 Смежные вопросы

  • Нет связанных вопросов^_^