Django-Weasyprint图像问题 [英] Django-Weasyprint image issue

查看:36
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆