Django-Weasyprint Image issue

как говорится на странице docs, я определил тег img в своем html-файле следующим образом:

<img src='{% static 'image.png' %}'/>

этот url существует на сервере, и я даже сделал другой вид с ответом http, и изображение отображается просто отлично. Вот код для обоих представлений:

представление pdf-weasyprint:

def card_view(request):
    template = loader.get_template('card.html')
    context = {'sample': None
               }
    html = template.render(RequestContext(request, context))
    response = HttpResponse(mimetype='application/pdf')
    HTML(string=html).write_pdf(response)
    return response

представление html:

def card_view2(request):
    context = {'sample': None,
               }
    return render_to_response('card.html', context, 
                              context_instance=RequestContext(request))

Я думал, что по умолчанию URL-адрес должен был найти и отобразить изображение (это png-так что нет вопрос формата должен быть вовлечен) Есть идеи? Любая помощь будет оценена!!

1 ответов


в чем именно проблема? Есть что-нибудь в журналах? (Возможно, вам понадобится настройка ведения журнала если ваш сервер не регистрирует поток stderr.) Как выглядит сгенерированный HTML?

мне действительно нужны ответы на вышеизложенное, чтобы подтвердить, но я предполагаю, что URL-адрес изображения относителен, но с HTML(string=...) WeasyPrint понятия не имеет, что такое базовый URL. Попробуй что-нибудь подобное. (Я не уверен в деталях Django.)

HTML(string=html, base_url=request.build_absolute_uri()).write_pdf(response)

это сделает настоящий HTTP запрос на ваше приложение, которое может взаимоблокироваться на однопоточном сервере. (Я думаю, что сервер по умолчанию в один поток.)

чтобы избежать этого и стоимости прохождения через сеть, вы можете посмотреть на написание пользовательского "URL fetcher". Это может быть где угодно, от специализированного до только этого изображения, до полного эквивалента Django Фляга-WeasyPrint.