在一個網頁中,不僅僅只有一個`html`骨架,還需要`css`樣式文件,`js`執行文件以及一些圖片等。因此在`DTL`中加載靜態文件是一個必須要解決的問題。在`DTL`中,使用`static`標簽來加載靜態文件。要使用`static`標簽,首先需要`{% load static %}`。加載靜態文件的步驟如下:
- 首先確保`django.contrib.staticfiles`已經添加到`settings.INSTALLED_APPS`中。
- 確保在`settings.py`中設置了`STATIC_URL`。
- 在已經安裝了的`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`,這樣就可以避免產生混淆。)
- 如果有一些靜態文件是不和任何`app`掛鈎的。那么可以在`settings.py`中添加`STATICFILES_DIRS`,以后`DTL`就會在這個列表的路徑中查找靜態文件。比如可以設置為: ```python STATICFILES_DIRS = [ os.path.join(BASE_DIR,"static") ] ```
- 在模版中使用`load`標簽加載`static`標簽。比如要加載在項目的`static`文件夾下的`style.css`的文件。那么示例代碼如下: ```html {% load static %} ```
- 如果不想每次在模版中加載靜態文件都使用`load`加載`static`標簽,那么可以在`settings.py`中的`TEMPLATES/OPTIONS`添加`'builtins':['django.templatetags.static']`,這樣以后在模版中就可以直接使用`static`標簽,而不用手動的`load`了。
如果沒有在`settings.INSTALLED_APPS`中添加`django.contrib.staticfiles`。那么我們就需要手動的將請求靜態文件的`url`與靜態文件的路徑進行映射了。示例代碼如下: ```python from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 其他的url映射 ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT