неожиданный вывод при попытке конвертировать HTML в PDF в Django - PullRequest
0 голосов
/ 12 декабря 2018

Вот мой взгляд, который преобразует HTML в Django

@api_view(['GET'])
@renderer_classes((JSONRenderer,TemplateHTMLRenderer))
def admin_order_pdf(request, order_id, *args, **kwargs):
# def admin_order_pdf(request, order_id):

    queryset=D.objects.all()
    # serializer=
    order = get_object_or_404(queryset, id=order_id)
    price=order.price
    discount=order.discount
    total=price-discount
    template=get_template('bill/bill.html')
    data={
    'order': order,'total':total
    }
    html = render_to_pdf('bill/bill.html',
    data)
    return HttpResponse(html, content_type='application/pdf')

, и это код для render_to_pdf

from io import BytesIO
from django.http import HttpResponse
from django.template.loader import get_template

from xhtml2pdf import pisa

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 HttpResponse(result.getvalue(), content_type='application/pdf')
    return None

и мой urls.py

re_path(r'^bill/(?P<order_id>\d+)/pdf/$',
    admin_order_pdf,
 name='admin_order_pdf'),

и мой HTML-шаблон

<html>
<body>
 <h1>My Shop</h1>
 <p>
   {% for ord in order %}
   <li>{{ ord.name }}</li>
   {% endfor %}

, но всякий раз, когда я пытался получить доступ к URL-адресу, я мог загрузить PDF, но в этом конкретном PDF-файле нет содержимого, кроме одного слова "профили", я даже не знаю, гдеэто слово пришло от

...