載入靜態文件 在一個網頁中,不僅僅只有一個 html 骨架,還需要 css 樣式文件, js 執行文件以及一些圖片 等。因此在 DTL 中載入靜態文件是一個必須要解決的問題。在 DTL 中,使用 static 標簽來載入 靜態文件。要使用 static 標簽,首先需要 {% load static ...
載入靜態文件
在一個網頁中,不僅僅只有一個 html 骨架,還需要 css 樣式文件, js 執行文件以及一些圖片 等。因此在 DTL 中載入靜態文件是一個必須要解決的問題。在 DTL 中,使用 static 標簽來載入 靜態文件。要使用 static 標簽,首先需要 {% load static %} 。載入靜態文件的步驟如下:
1. 首先確保 django.contrib.staticfiles 已經添加到 settings.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)