最近將Django要搬到正式環境,所要將settings中的Debug模式關掉,卻發生靜態文件無法讀取的問題,相信這是在使用Djanog很常遇到的問題,先記錄下來,我有兩個靜態目錄,一個用來存放像是JS、網站logo等這種叫做’static’,另一個是用來存放使用者上傳的圖片,之後要顯示出來,取名為’media’.
Django 2.0
settings.py
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) DEBUG = False
STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ] STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') MEDIA_URL = '/media/'
urls.py
from django.views.static import serve urlpatterns = [ ..... re_path(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}), ]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)