1. 程式人生 > 其它 >Django 本地專案設定DEBUG=False靜態檔案與上傳檔案404不存在錯誤解決

Django 本地專案設定DEBUG=False靜態檔案與上傳檔案404不存在錯誤解決

技術標籤:Djangodjangopython

Django 本地專案設定DEBUG=False靜態檔案與上傳檔案404不存在錯誤解決

生產環境:
python=3.8
django=3.1

預設配置django在DEBUG=True時通過’django.contrib.staticfiles’ (app) 搜尋靜態檔案;使用者上傳則需編寫程式碼手動配置

from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
...
]
# 使用者上傳媒體檔案(使用者頭像)
urlpatterns +=
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

當DEBUG=False時會發生靜態檔案與使用者上傳檔案404不存在

解決方案: 配置django.views.static.serve()為靜態檔案與使用者上傳檔案提供服務

一 .設定settings
# project/setting.py 

DEBUA=False
# 靜態檔案
STATIC_URL = '/static/'
# collectstatic收集靜態檔案的絕對路徑
STATIC_ROOT = os.path.join(BASE_DIR, "static_root"
) STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ] # 媒體檔案地址:使用者上傳檔案儲存/訪問的位置 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
二.設定urls
# app/urls

from django.conf import settings
from django.conf.urls.static import static
from django.urls import path, re_path

urlpatterns =
[ re_path(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}, name='static'), re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}, name='media'), ]
三.執行python manage.py collectstatic命令(收集靜態檔案)
# 終端命令

python manage.py collectstatic
四.啟動專案 檢視是否顯示成功
python manage.py rusnerver
如有問題歡迎留言…