django項目部署後靜態文件收集【解決admin後臺靜態文件丟失】
在部署完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後臺靜態文件丟失】