前段時間調試一直是在Debug=True先運行的,沒有什么問題。今天關閉了Debug后,出現了一個問題。就是靜態文件找不到了,「img、css、js」都提示404,無法准確的訪問 static 靜態文件。
環境是:Python3.7 Django2.2
出現的問題根本原因是:當我們在開發django應用時如果設置了 DEBUG = True,那么django便會自動幫我們對靜態文件進行路由;但是當我們設置DEBUG = False后,這一功能便沒有了,此時靜態文件就會出現加載失敗的情況,想要讓靜態文件正常顯示,我們就需要配置靜態文件服務了。參考官方文檔https://docs.djangoproject.com/en/2.0/howto/static-files/
1. 首先修改App setting.py文件
STATIC_URL = '/static/' STATIC_ROOT = 'static' ## 新增行 STATICFILES_DIRS = [ os.path.join(BASE_DIR, '/static/'), ##修改地方 ]
2. 修改urls.py
from django.views import static ##新增 from django.conf import settings ##新增
from django.conf.urls import url ##新增
urlpatterns = [ path('', include('user.urls')), ## 以下是新增 url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='static'), ]
到這里再運行應該是可以了,如果還有報STATIC_ROOT錯。如果是下面的提示,請修改參見第一點的。
ERRORS: ?: (staticfiles.E002) The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting. System check identified 1 issue (0 silenced)
.
os.path.join(BASE_DIR, '/static/'), #多加了/
“偶爾放縱,是對自己獎勵?”