我應該如何引用在Django模板一個車把部分靜態文件?如果我使用verbatim
標籤,則可以使用把手,但是我無法使用django的static
標籤。
詳細
雖然轉換的應用Django的,我碰到一個使用handelbars.js
渲染Ajax的呼叫結果的一部分。通過,其中,「Handlebars.js in Django templates」我發現了關於{% verbatim %}
標籤。
一個簡單的把手工作正常。但我也有在圖像被動態地展示了基於結果的一部分,它看起來是這樣的:
<img src="path/{{ result }}.png">
現在,雖然這工作正常,如果我手動設置路徑,我相信在Django這是很好的做法,引用您的靜態文件,像這樣:
<img src="{% static 'path/file.png' %}">
剛開不建議一個static_url
不變,see for instance this blog
所以除非有人有一個真正令人信服的理由,否則解決它,我相信這是最好用{% static %}
方法。
天真的解決方案是將2種技術結合起來,並逐字逐字地噴塗模板。除了這看起來醜陋,難以辨認,從一開始看起來似乎是一個壞主意,它也不起作用。
{% verbatim %}
<!-- handlebars -->
{% endverbatim %}
<img src="{% static 'path{% verbatim %}{{ result }}{% endverbatim %}' %}">
{% verbatim %}
<!-- handlebars -->
{% endverbatim %}
這結束在流淚,作爲結果是
' 路徑{%'TemplateSyntaxError在/
無法解析的餘數: '從 '' 路徑{% '
可能可以在後端生成正確的靜態url並進行渲染。但是後端不應該意識到我們想要在模板中顯示的圖像。
唯一的解決方案可能是使用「相對」字符串(例如path/result.png
)向後端額外調用後端,並請求正確的靜態鏈接?這並不難,但需要一個額外的電話,而不是這種情況。
那麼我該如何正確引用這些靜態文件呢?
反對在鏈接到的博客文章中使用「STATIC_URL」的參數似乎與您的用例無關。事實上,我會反駁,因爲你明確只需要靜態URL前綴。 URL的其餘部分(文件名部分)是由您的句柄模板在客戶端生成的。還要注意,有一個['get_static_prefix'](https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#get-static-prefix)模板標籤,它爲你包裝了'STATIC_URL'。 – solarissmoke
我不確定我是否同意。我想要一個來自json的圖像(名稱部分)的可變部分,並通過句柄進行分析。但是這個圖像被django用作靜態文件,所以我想讓django決定那裏會發生什麼。 沒有理由說,鏈接底部的緩存示例在我的情況下無效 - >如果我想緩存它們,那麼句柄就不知道它。所以最後,handlebars只會知道靜態文件的「相對」部分,並且據我所知,該博客中的所有參數都是相關的? – Nanne
那麼爲JSON使用適當的靜態URL生成很重要?我沒有看到它對於手柄模板有什麼幫助,實際的文件路徑(這是什麼緩存/不同的存儲後端/ etc會修改)是生成的客戶端。 – solarissmoke