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.