1. 程式人生 > >django項目部署後靜態文件收集【解決admin後臺靜態文件丟失】

django項目部署後靜態文件收集【解決admin後臺靜態文件丟失】

roc Django項目 admin 文件中 cts 相關 div os.path 發生

在部署完Django項目後,進行admin後臺登錄發現樣式丟失,後臺日誌顯示:js和css文件丟失

解決辦法:

配置settings.py如下:

#DEBUG打開時,app的靜態文件默認從這裏讀取
STATIC_URL = ‘/static/‘

#靜態文件根目錄,當關閉DEBUG的時候admin從STATIC_ROOT獲取靜態文件,同時需要配置url
STATIC_ROOT = ("f:/py_workspace/DJ/proj/people/static/")

#Django部署在Apache服務器後的公共靜態文件路徑STATICFILES_DIRS
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "common_static"),
)

配置url.py如下

url(r‘^static/(?P<path>.*)$‘, ‘django.views.static.serve‘, {‘document_root‘: settings.STATIC_ROOT}),

然後,進行 python manage.py collectstatic 操作,將相關靜態文件都copy到static_root的路徑下 【實際是copy了admin的static文件到app的static文件夾內

刷新即可看到已經渲染成功。

參考:https://blog.csdn.net/a657941877/article/details/8953233


其他參考:

使用Django靜態設置時,遇到很多問題,經過艱苦的Baidu, stack overflow, Django原檔閱讀,終於把靜態圖片給搞出來了。特記錄下來。

關鍵的概念:Django中,靜態資源的存放通過設置 STATIC_URL, STATICFILES_DIRS 來設置,一般STATIC_URL設置為:/static/

STATIC_URL=‘/static/‘, 這個static 是在Django 具體APP下建立的static目錄,用來存放靜態資源。而STATICFILES_DIRS一般用來設置通用的靜態資源,對應的目錄不放在APP下,而是放在Project下,例如:

STATICFILES_DIRS=(os.path.join(BASE_DIR, "common_static"),)

具體在模板文件中訪問的時候,都是統一用:/static/資源名的方式,就可以訪問到資源,不論具體的目錄是APP下的static,還是project下的common_static, 都可以用/static/資源名的方式訪問到。

為增強可移植性,在模板中可以用:STATIC_URL來代替具體的/static/來設置資源路徑,但是需要在settings.py中2個地方進行設置,否則會發生取不到資源的錯誤:

1. INSTALLED_APPS 中,加入 ‘django.contrib.staticfiles‘

2. TEMPLATES 中,context_processors中,加入django.template.context_processors.static

模板中調用時:

<img src="{{STATIC_URL}}pic.jpg " />

django項目部署後靜態文件收集【解決admin後臺靜態文件丟失】