Django設置DEBUG爲False時,'django.contrib.staticfiles'
會關閉,即Django不會自動搜索靜態文件,靜態文件不能加載致使的問題有兩個:css
1.頁面排版不正常,即css文件不能正常加載;
2.經過url不能訪問靜態文件,如圖片等。python
這裏大體先說一下STATIC_ROOT、STATICFILES_DIR的不一樣之處:django
1.STATICFILES_DIRS是靜態文件路徑;app
2.STATIC_ROOT用來存儲使用python manage.py collectstatic
命令收集起來的靜態文件。url
可使用Django來處理靜態文件。spa
1.在settings.py中指定STATIC_ROOT, STATICFILES_DIRS等變量,例如:debug
# 默認 STATIC_URL = '/static/' # 項目根目錄下的static文件夾 STATIC_ROOT = os.path.join(BASE_DIR, 'static') # 不能和STATIC_ROOT路徑相同 STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'zhitu/static'), ] MEDIA_URL = '/media/' # 項目根目錄下的media文件夾 MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
2.在settings.py
中配置項目的模版文件路徑:code
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', # 指定模版文件路徑 'DIRS': [os.path.join(BASE_DIR, 'apps', 'templates'),], # 設置爲False, 再也不去每一個app下找templates文件,會在DIRS指定的路徑尋找 'APP_DIRS': False, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
3.在urls.py
中添加blog
from django.views import static from django.conf import settings urlpatterns = [ url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROOT }, name='static'), ]