最近將Django要搬到正式環境,所要將settings中的Debug模式關掉,卻發生靜態文件無法讀取的問題,相信這是在使用Djanog很常遇到的問題,先記錄下來,我有兩個靜態目錄,一個用來存放像是JS、網站logo等這種叫做’static’,另一個是用來存放使用者上傳的圖片,之後要顯示出來,取名為’media’.
Django 2.0
settings.py
1 2 |
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) DEBUG = False |
1 2 3 4 5 6 |
STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ] STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage' |
1 2 |
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') MEDIA_URL = '/media/' |
urls.py
1 2 3 4 5 6 7 8 |
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) |