如何从函数而不是视图加载django模板中的静态图像
How to load static images in a django template from function not from view
我正在使用 django 模板通过从函数而不是 view
提供上下文对象来生成 pdf,它在 view
的情况下工作正常,但我无法从函数加载模板上的本地静态图像。但这在视图中是可能的,因为在那里我可以告诉使用哪个基本路径。但是我无法在功能中做同样的事情。
如您所见,我知道如何从视图中获取基础 url。在这里我可以得到,因为我有 requests
对象但在功能上我没有任何 requests
对象。所以图片没有加载。
html = HTML(string=html_string, base_url=request.build_absolute_uri('/'))
这就是我在函数中尝试做的事情:
html_string = render_to_string('experiences/voucher.html', data)
html = HTML(string=html_string, base_url=settings.STATIC_ROOT)
result = html.write_pdf("file_new.pdf", stylesheets=[css],optimize_images=True)
我想知道我怎么知道我的图像在哪里,以便可以在 pdf 上呈现图像。
它不起作用,因为 base_url
无法知道图像的位置,尤其是在 运行 服务器上,所以我必须明确定义本地资源的路径,所以我做了是这样的:
首先,我在 .env
文件中添加了一个环境变量:
喜欢 HOST=http://localhost:8000
然后我在我的实际代码中得到这个 url 是这样的:
path = os.environ["HOST"]+"/static/"
最后我将此路径传递给 HTML()
中的 base_url
参数
html = HTML(string=html_string, base_url=path)
毕竟这一切都很有效。
我正在使用 django 模板通过从函数而不是 view
提供上下文对象来生成 pdf,它在 view
的情况下工作正常,但我无法从函数加载模板上的本地静态图像。但这在视图中是可能的,因为在那里我可以告诉使用哪个基本路径。但是我无法在功能中做同样的事情。
如您所见,我知道如何从视图中获取基础 url。在这里我可以得到,因为我有 requests
对象但在功能上我没有任何 requests
对象。所以图片没有加载。
html = HTML(string=html_string, base_url=request.build_absolute_uri('/'))
这就是我在函数中尝试做的事情:
html_string = render_to_string('experiences/voucher.html', data)
html = HTML(string=html_string, base_url=settings.STATIC_ROOT)
result = html.write_pdf("file_new.pdf", stylesheets=[css],optimize_images=True)
我想知道我怎么知道我的图像在哪里,以便可以在 pdf 上呈现图像。
它不起作用,因为 base_url
无法知道图像的位置,尤其是在 运行 服务器上,所以我必须明确定义本地资源的路径,所以我做了是这样的:
首先,我在 .env
文件中添加了一个环境变量:
喜欢 HOST=http://localhost:8000
然后我在我的实际代码中得到这个 url 是这样的:
path = os.environ["HOST"]+"/static/"
最后我将此路径传递给 HTML()
base_url
参数
html = HTML(string=html_string, base_url=path)
毕竟这一切都很有效。