Django-Weasyprint图像问题 [英] Django-Weasyprint image issue
本文介绍了Django-Weasyprint图像问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
正如文档页面中所述,我在html文件中定义了img标记,如下所示:
<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-所以不应该涉及格式问题) 有什么主意吗?如有任何帮助,我们将不胜感激!!
推荐答案
到底是什么问题?你在日志里找到什么了吗?(如果您的服务器不记录stderr,则可能需要configure logging。)生成的HTML是什么样子?
我确实需要上面的答案才能确认,但我猜图像的URL是相对的,但是使用HTML(string=...)
WeasyPrint不知道基本URL是什么。试试这样的东西。(我不确定Django的详细信息。)
HTML(string=html, base_url=request.build_absolute_uri()).write_pdf(response)
这将在您的应用程序上发出真正的HTTP请求,这可能会在单线程服务器上死锁。(我认为开发服务器默认使用单个线程。)
要避免这种情况和通过网络的成本,您可能需要考虑编写自定义"URL fetcher"。它可以是任何地方,从专门的到仅此一个图像,再到Flask-WeasyPrint的完整Django等效项。
这篇关于Django-Weasyprint图像问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文