Aug 3, 2017 Djnago English
在這篇文章,我將介紹如何使用 WhiteNoise 處理靜態文件。你或許會有疑問,為什麼我們需要額外的軟體來處理靜態文件?原因是在開發環境下 Django 會提供一個預設的機制來處理靜態資源的請求,但是在正式環境下 Django 團隊強烈建議使用其他的方式來處理,例如:使用 Nginx、Apache 和 AWS S3。因此,當你的 Django 應用是一個 MVP 或是流量較低的網站,WhiteNoise 就成為一個簡單的解決方案。
若你還未將環境設定好,你可以使用以下指令快速建立專案:
# 安裝 Django
python -m pip install Django
# 查看 Django 版本
python -m django --version
# 建立 Django 專案
django-admin startproject <project-name>
專案的預設結構如下:
project-name/
├── project-name
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
使用 pip 安裝 WhiteNoise 會是最簡單的方式:
python -m pip install whitenoise
基本上,我們不需要在這步驟做太多事情,我們只需要將以下的設定加入至 settings.py 即可:
# 將 WhiteNoise 加入 middlewares
MIDDLEWARE = [
...
'whitenoise.middleware.WhiteNoiseMiddleware',
]
# 設定靜態文件所在位置
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
當然,你可以在文件中找到更多參數。
既然我們已經在設定檔中指定靜態資源的位置,因此我們需要複製各個應用的靜態資源並放到該處。幸運地,Django 已經提供了簡單的指令:
python manage.py collectstatic --noinput
當以上步驟都完成後,將 Django 啟動後 WhiteNoise 就會自動開始接手處理靜態資源的請求。別忘了,當 Debug 模式開啟後 Django 的預設處理機制會自動接手處理。
若對於文章內容有任何建議與指正,非常歡迎你告訴我或者與我一起討論 ! :)
zeckli.devforgalaxy@gmail.com © 2015-2019 zeckli, thanks to Jekyll and GitHub.