我有一個包含多個模板的大型 Django 專案,稍后將這些模板合并以動態構建頁面,我面臨一個奇怪的問題,如下所示:
我有一個
base.html包含所有需要的匯入,包括 JS 和 CSS。我在資產中有兩個 CSS/JS 的子檔案夾,它們通常在
base.html.
現在,隨著我的專案越來越大,我決定我寧愿匯入腳本,例如:
<script type="text/javascript" src="{% static "js/base.js" %}"></script>
<script type="text/javascript" src="{% static "js/menus/projects.js" %}"></script>
<script type="text/javascript" src="{% static "js/menus/sensors.js" %}"></script>
包含在每個單獨的 HTML 檔案中,而不是全部都在 中base.html,我希望沒有問題,因為據我所知,include陳述句也應該傳輸背景關系,以供參考,這些是include感興趣的陳述句:
- 在
base.html:
{% include "applications/Devices/deviceDashboard.html" %}
- 在
deviceDashboard.html:
{% include "applications/Devices/deviceDashboard/listCard.html" %}
{% include "applications/Devices/deviceDashboard/editCard.html" %}
{% include "applications/Devices/deviceDashboard/graphCard.html" %}
在所有這些中,如果我嘗試按原樣運行它,我會得到以下資訊:
TemplateSyntaxError at /
Invalid block tag on line 25: 'static'. Did you forget to register or load this tag?
當我嘗試使用與以前相同的腳本匯入標簽時,當我{% load static %} 為每個單獨的頁面使用時,這個問題就消失了。我{% load static %}在我的base.html, 但它只適用于該檔案,而不適用于通過該include函式呼叫的任何子檔案。
為什么include這里不復制背景關系?還是默認情況下不復制“靜態”?我懷疑這應該是我對include這里應該如何作業的簡單誤解,但我在搜索時找不到任何東西。最后,如果它是如何匯入的,我該如何解決這個問題?
uj5u.com熱心網友回復:
Django 的load模板標簽只加載特定模板檔案的包,不會通過extendsorinclude標簽繼承。
請參閱此錯誤報告的解釋:
我的理解是這是一個功能,而不是一個錯誤。模板系統只提供每個模板檔案本身加載的標簽,這樣模板就可以重復使用,而不必猜測它們的環境期望是什么。
必須將 {% load i18n %} 放在每個模板中的問題的解決方法可能是添加特定于應用程式的自動加載模板設定,因此每個應用程式作者都可以決定其模板的基本命名空間是什么。這將需要添加特定于應用程式的配置系統,并以某種方式讓模板模塊知道“當前應用程式”是什么。
如果您希望特定標簽在所有模板中可用,您可以使用此處使用的方法: Load static files for all templates in django
uj5u.com熱心網友回復:
在 django 專案 settings.py 中定義靜態檔案設定
STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
MEDIA_URL = "/media/"
MEDIA_ROOT = BASE_DIR / "media"
還要將此添加到您的專案主 urls.py
urlpatterns = static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/330713.html
上一篇:Django表正向填充缺失值
