1. 程式人生 > >041:模版中載入靜態檔案詳解

041:模版中載入靜態檔案詳解

載入靜態檔案:

在一個網頁中,不僅僅只有一個 html 骨架,還需要 css 樣式檔案, js 執行檔案以及一些圖片等。因此在 DTL 中載入靜態檔案是一個必須要解決的問題。在 DTL 中,使用 static 標籤來載入靜態檔案。要使用 static 標籤,首先需要 {% load static %} 。載入靜態檔案的步驟如下:


1、 首先確保 django.contrib.staticfiles 已經新增到 sttings.INSTALLED_APPS 中。

2、 確保在 settings.py 中設定了 STATIC_URL 。

3、 在已經安裝了的 app 下建立一個資料夾叫做 static ,然後再在這個 static 資料夾下建立一個當前 app 的名字的資料夾,再把靜態檔案放到這個資料夾下。例如你的 app 叫做 book ,有一個靜態檔案叫做 zhiliao.jpg ,那麼路徑為 book/static/book/zhiliao.jpg 。(為什麼在 app 下建立一個 static 資料夾,還需要在這個 static 下建立一個同 app 名字的資料夾

呢?原因是如果直接把靜態檔案放在 static 資料夾下,那麼在模版載入靜態檔案的時候就是使用 zhiliao.jpg ,如果在多個 app 之間有同名的靜態檔案,這時候可能就會產生混淆。而
在 static 資料夾下加了一個同名 app 資料夾,在模版中載入的時候就是使用 app/zhiliao.jpg ,這樣就可以避免產生混淆。)

4. 如果有一些靜態檔案是不和任何 app 掛鉤的。那麼可以在 settings.py 中新增 STATICFILES_DIRS ,以後 DTL 就會在這個列表的路徑中查詢靜態檔案。比如可以設定為:

STATICFILES_DIRS = [
os.path.join(BASE_DIR,
"static") ]

5. 在模版中使用 load 標籤載入 static 標籤。比如要載入在專案的 static 資料夾下的 style.css 的檔案。那麼示例程式碼如下:

{% load static %}
<link rel="stylesheet" href="{% static 'style.css' %}">

6. 如果不想每次在模版中載入靜態檔案都使用 load 載入 static 標籤,那麼可以在 settings.py 中的 TEMPLATES/OPTIONS 新增 'builtins':['django.templatetags.static'] ,這樣以後在模版中就可以直接使用 static 標籤,而不用手動的 load 了。

7. 如果沒有在 settings.INSTALLED_APPS 中新增 django.contrib.staticfiles 。那麼我們就需要手動的將請求靜態檔案的 url 與靜態檔案的路徑進行映射了。示例程式碼如下:

from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# 其他的url對映
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)