當Django的settings.py中DEBUG由True改為False,為開發環境轉換為生產環境必改的設定。
DEBUG改為False後,讀取靜態檔案發生錯誤,原來DEBUG設置DEBUG為False時,’django.contrib.staticfiles’會關閉,即Django不會自動搜尋靜態檔案。
靜態文件不能讀取導致2個問題:
- CSS、JS檔案無法讀取
- 通過url不能訪問靜態文件,如圖片、檔案
網路搜尋的處理方式眾多,但隨著Django版本不同,過去的紀錄已不適用。
以下為Django1.11版本參考網路上的紀錄修改後的版本
以下為Django1.11版本參考網路上的紀錄修改後的版本
版本:
System version : Windows 10,Ubuntu16.04
Python version : Python 3.6.0 :: Anaconda 4.3.1 (64-bit)
Django version : 1.11.2
檔案結構:
◢ project_name
◢ app_name
◢ templates
◢ app_name
page1.html
404.html
urls.py
views.py
◢ project_name
settings.py
urls.py
views.py
◢ static
◢ css
◢ js
◢ image
favicon.png
manage.py
project_name/project_name/settings.py
# DEBUG = True
DEBUG = False
STATIC_URL = '/static/'
if DEBUG is False:
STATIC_ROOT = (
os.path.join(BASE_DIR, 'static')
)
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
project_name/project_name/urls.py
加入以下程式碼
from django.views.static import serve
from . import settings
if settings.DEBUG is False:
urlpatterns.append(url(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}))