Django如何获取视图中的静态文件URL?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (49)

我正在使用reportlab pdfgen创建PDF。在PDF中有一个由...创建的图像drawImage。为此,我需要指向图像的URL或视图中图像的路径。我设法建立了URL,但是如何获得图像的本地路径?

我如何获取网址:

prefix = 'https://' if request.is_secure() else 'http://'
image_url = prefix + request.get_host() + STATIC_URL + "images/logo_80.png"
提问于
用户回答回答于

就我个人而言,我更喜欢这个,因为它将实现留给Django框架。

# Original answer said:
# from django.templatetags.static import static
# Improved answer (thanks @Kenial, see below)
from django.contrib.staticfiles.templatetags.staticfiles import static

url = static('x.jpg')
# url now contains '/static/x.jpg', assuming a static path of '/static/'
用户回答回答于

dyve的回答是不错的,但是,如果你使用你的Django项目和静态文件的最终URL路径“缓冲存储”应该得到“哈希”(如style.aaddd9d8d8d7.cssstyle.css文件),然后你无法获得精确的网址django.templatetags.static.static()。相反,你必须使用模板标签django.contrib.staticfiles来获取哈希URL。

另外,在使用开发服务器的情况下,这个模板标签方法返回非哈希url,所以你可以使用这个代码,而不管它是开发还是生产的主机!

from django.contrib.staticfiles.templatetags.staticfiles import static

# 'css/style.css' file should exist in static path. otherwise, error will occur 
url = static('css/style.css')

扫码关注云+社区