Django 設置debug=false 出現靜態文件讀取不到的問題

Django設置 DEBUG=False後靜態文件無法加載解決

在這裏插入圖片描述

出現的問題根本原因是:當我們在開發django應用時如果設置了 DEBUG = True,那麼django便會自動幫我們對靜態文件進行路由;但是當我們設置debug=Flase後,'django.contrib.staticfiles’會關閉,即Django不會自動搜索靜態文件。這一功能便沒有了,此時靜態文件就會出現加載失敗的情況,想要讓靜態文件正常顯示,我們就需要配置靜態文件服務了。參考官方文檔https://docs.djangoproject.com/en/2.0/howto/static-files/

靜態文件訪問不到出現的兩個問題
一 頁面排版不正常,即css文件不能正常加載;
二 通過url不能訪問靜態文件,如圖片等。例如訪問http://127.0.0.1:8000/static/img/example.png會顯示404頁面。

這裏提供幾種解決方法:

解決辦法一:

在DEBUG爲False時需要我們手動指定靜態資源目錄,並配置映射關係。 在正式環境下不建議採用django處理靜態資源文件,這樣對應用服務器壓力較大,也不好做cdn。可以用nginx,apache部署靜態資源。

1.首先修改setting.py文件

STATIC_URL = '/static/'
STATIC_ROOT = 'static' ## 新增行
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, '/static/'), ##修改地方
]

2.修改url.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'),
]

解決辦法二:

如果您仍需要本地服務器靜態(例如,無需調試進行測試),您可以在不安全模式下運行server,啓動服務器命令後面添加

“–insecure”

python manage.py 127.0.0.1:8000 --insecure

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章