2

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

これは、何かが欠けていることを示しています。スタイルシートを呼び出し可能にする方法は? ありがとう。

4

1 に答える 1

4

request呼び出しでオブジェクトを URL フェッチャーとして使用していますweasyprint.HTML( url_fetcher=request)。認証などを必要としない単純なリソースをフェッチするために、この引数を指定する必要はありません。

URL fetcher の詳細については、こちらを参照してください。

于 2015-10-28T13:03:54.083 に答える