關聯(lián)之前的文章《Django生產(chǎn)環(huán)境下靜態(tài)資源無法訪問的問題》
這次的更新,主要是因為,Django項目很久沒碰了冻记,昨天新增了一個app理逊,功能完成后,調整settings.py
中的DEBUG=False
括勺,發(fā)現(xiàn)DEBUG
不同灯谣,資源訪問會有問題潜秋。
我期望的是,不論DEBUG
怎么設置胎许,程序自動判斷峻呛,不要影響資源方面的設置(也就是上面那篇文章提到的設置)罗售。
同時簡化了之前的設置(不知道之前怎么想的,瞎折騰??)
之前設置的時候钩述,默認資源目錄是
static
寨躁,
當時我理解不夠,自己加了目錄叫static_root
(里面是bootstrap
之類的公用資源)
現(xiàn)在發(fā)現(xiàn)牙勘,其實都可以放在static
里朽缎,也方便設置
新的設置
settings.py
DEBUG = False
...
STATIC_URL = 'static/' # 訪問靜態(tài)文件的URL前綴
STATICFILES_DIRS = ( # 存放查找靜態(tài)文件的目錄
# os.path.join(BASE_DIR, 'static'), -- 這一行注釋掉,因為需要根據(jù)`DEBUG`值的情況來決定要不要加上?
os.path.join(BASE_DIR, 'ddkq/static'), # app自己的static目錄
os.path.join(BASE_DIR, 'fund/static'),
)
if DEBUG:
# 測試模式下谜悟,`static`目錄放入`STATICFILES_DIRS`?
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) + STATICFILES_DIRS
else:
# 生產(chǎn)模式下,`static`目錄不能放進去北秽,并且要設置`STATIC_ROOT`?
STATIC_ROOT = 'static' # 生產(chǎn)環(huán)境下的static目錄
我看有的文章葡幸,路徑寫的是
/static/
,前后加了斜杠贺氓,
我試了蔚叨,不行。辙培。蔑水。上面代碼是我實際測試可行的。扬蕊。搀别。供參考
urls.py
跟上一篇文章說的方式一致,保持不變
關鍵代碼如下:
urlpatterns = [
...
re_path(r"^static/(?P<path>.*)$", serve, {"document_root": settings.STATIC_ROOT}, name='static'), # 這行是關鍵?
]
結束
這次修改尾抑,主要是針對我自己的項目
-
DEBUG
不論怎么設置歇父,不需要我手動調整資源配置(包括代碼和實際目錄) - 去掉我擅自添加的
static_root
目錄,結構和思路都清晰