static教學 Django獲取視圖中的靜態文件URL




django靜態文件 (3)

由於這是谷歌的最高成績,我認為我會增加另一種方式來做到這一點。 我個人更喜歡這個,因為它將實現留給了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/'

我正在使用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項目中使用“緩存存儲”,並且靜態文件的最終url路徑應該被“散列”(比如style.css中的 style.aaddd9d8d8d7.css ),那麼dyve的答案是好的,那麼你無法使用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')

這是另一種方式! (在Django 1.6上測試)

from django.contrib.staticfiles.storage import staticfiles_storage
staticfiles_storage.url(path)




django-staticfiles