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 中使用 WeasyPrint 生成报告。但我不知道如何集成 css(特别是引导 css 文件)。我能够看到生成的 html。但是当我将此行添加到我的模板时会收到警告-
<link href="/static/css/bootstrap.min.css" rel="stylesheet"/>
警告是 - 没有基本 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 HTML to PDF 未在 TEST VM 环境中呈现图像 - Django