尝试使用 weasyprint 输出为 pdf 失败 css
trying to output to pdf using weasyprint fails css
我正在尝试从 django 输出 pdf。我正在使用 weasyprint。这是我的观点:
def fleet_report_pdf(request):
template = loader.get_template("Reports/fleetreport.html")
context = {
'crews': models.Unit.objects.all().annotate(c=Count('memberunit__Member')),
's31': models.Member.objects.filter(memberunit__isnull=True)
}
html = template.render(RequestContext(request, context))
response = HttpResponse(content_type="application/pdf")
weasyprint.HTML(string=html, base_url=request.build_absolute_uri(), url_fetcher=request).write_pdf(response)
return response
PDF 已加载,但页面未设置样式。进一步挖掘时,我注意到控制台中出现如下错误:
Failed to load stylesheet at http://127.0.0.1:8000/static/css/layout.css : TypeError: 'WSGIRequest' object is not callable
Failed to load stylesheet at http://127.0.0.1:8000/static/css/darkblue.css : TypeError: 'WSGIRequest' object is not callable
Failed to load stylesheet at http://127.0.0.1:8000/static/css/custom.css : TypeError: 'WSGIRequest' object is not callable
这告诉我我遗漏了什么。如何使样式表可调用?谢谢
您在 weasyprint.HTML
调用 (url_fetcher=request
) 中使用 request
对象作为 url 提取器。您不需要提供此参数来获取不需要身份验证的简单资源。
有关 URL 提取器的详细信息,请参见 this。
我正在尝试从 django 输出 pdf。我正在使用 weasyprint。这是我的观点:
def fleet_report_pdf(request):
template = loader.get_template("Reports/fleetreport.html")
context = {
'crews': models.Unit.objects.all().annotate(c=Count('memberunit__Member')),
's31': models.Member.objects.filter(memberunit__isnull=True)
}
html = template.render(RequestContext(request, context))
response = HttpResponse(content_type="application/pdf")
weasyprint.HTML(string=html, base_url=request.build_absolute_uri(), url_fetcher=request).write_pdf(response)
return response
PDF 已加载,但页面未设置样式。进一步挖掘时,我注意到控制台中出现如下错误:
Failed to load stylesheet at http://127.0.0.1:8000/static/css/layout.css : TypeError: 'WSGIRequest' object is not callable
Failed to load stylesheet at http://127.0.0.1:8000/static/css/darkblue.css : TypeError: 'WSGIRequest' object is not callable
Failed to load stylesheet at http://127.0.0.1:8000/static/css/custom.css : TypeError: 'WSGIRequest' object is not callable
这告诉我我遗漏了什么。如何使样式表可调用?谢谢
您在 weasyprint.HTML
调用 (url_fetcher=request
) 中使用 request
对象作为 url 提取器。您不需要提供此参数来获取不需要身份验证的简单资源。
有关 URL 提取器的详细信息,请参见 this。