Django WeasyPrint CSS 集成警告:没有基本 URI 的相对 URI 引用:<link href="/static/css/bootstrap.min.css&quo

Posted

技术标签:

【中文标题】Django WeasyPrint CSS 集成警告:没有基本 URI 的相对 URI 引用:<link href="/static/css/bootstrap.min.css"> 行无【英文标题】:Django WeasyPrint CSS integration warning: Relative URI reference without a base URI: <link href="/static/css/bootstrap.min.css"> at line None 【发布时间】:2015-01-21 17:38:02 【问题描述】:

我想在 Django 中使用 Wea​​syPrint 生成报告。但我不知道如何集成 css(特别是引导 css 文件)。我能够看到生成的 html。但是当我将此行添加到我的模板时会收到警告-

&lt;link href="/static/css/bootstrap.min.css" rel="stylesheet"/&gt;

警告是 - 没有基本 URI 的相对 URI 引用:在无行

我想知道如何将基本 URI 发送到模板。任何帮助将不胜感激。

【问题讨论】:

为什么你不使用 % static % 模板标签? @RajaSimon 这与这个问题的上下文无关; % static % 也产生相对 URL 【参考方案1】:

我必须添加base_url=request.build_absolute_uri()。所以打印命令看起来像:

weasyprint.HTML(string=html,base_url=request.build_absolute_uri()).write_pdf(response)

【讨论】:

请求对象从何而来? @Maecky 我可能回答这个问题有点晚了,但是这个问题有 Django 标签。我假设request 是与所有 Django 视图一起传递的变量。如果您在 Django 视图中并且没有可用的request 变量,您可能需要使用self.request。查看this page in the Django docs 对于更多读者,Weasyprint 基本上想要这个HTML(string=html_rendered, base_url="/app")- 这是一个绝对位置或 URL。当然,它应该是去硬编码的。【参考方案2】:

在 request.build_absolute_uri() 中添加 '/' 对我有用 -> request.build_absolute_uri('/'):

weasyprint.HTML(string=html,base_url=request.build_absolute_uri('/')).write_pdf(response)

【讨论】:

以上是关于Django WeasyPrint CSS 集成警告:没有基本 URI 的相对 URI 引用:<link href="/static/css/bootstrap.min.css&quo的主要内容,如果未能解决你的问题,请参考以下文章

weasyprint 与 django 将数字呈现为图像

Django-Weasyprint 图像问题

WeasyPrint HTML to PDF 未在 TEST VM 环境中呈现图像 - Django

django 生成动态的PDF文件

将 django 模板更改为具有 bootstrap 或 css 或两者的 PDF 的方法

使用具有通用页眉/页脚和分页的 WeasyPrint 生成 PDF