首頁 > 軟體

Django專案中動態設定靜態檔案路徑的全過程

2022-02-14 16:00:04

前言

Django專案需要在settings.py檔案中設定各種檔案的路徑,例如:媒體檔案(media)的路徑、靜態檔案(static files)的路徑、模板檔案(templetes)的路徑。然而對於每一個開發者而言,python虛擬環境是可以存放在任何位置的,所以每一個開發者檔案的絕對路徑也不完全相同。為了避免不同的執行環境下檔案位置不同造成的異常情況,可以通過動態設定路徑的方法來解決這個問題。

根據專案修改路徑相關設定,而不是將檔案路徑寫死到檔案中,修改base.py檔案,範例如下:

一、修改BASE_DIR:

修改前:

BASE_DIR = Path(__file__).resolve().parent.parent

修改後的內容

BASE_DIR = Path(__file__).resolve().parent.parent.parent

二、修改模板檔案路徑(TEMPLATES中的DIRS的值):

修改模板路徑前程式碼範例

修改模板路徑程式碼後範例

注:由於base.py檔案中預設是沒有匯入os模組,需要在base.py檔案開頭進行模組匯入,如下所示:

匯入os模組範例

三、修改國際化檔案路徑,由於LOCALE_PATHS預設不存在,需要自己在合適位置新增,如下圖所示:

國際化檔案路徑程式碼範例

四、修改公共檔案路徑,如下圖所示:

修改公共靜態檔案路徑後的程式碼範例

注:STATICFILES_DIRS是一個公共的資料夾, 因為有些靜態檔案不是某個app獨有的,那麼就可以把它放到一個公共資料夾裡面,方便管理。注意,建立一個公共的靜態檔案的資料夾只是一種易於管理的做法,但是不是必須的,app是可以跨app應用靜態檔案的,因為最後所有的靜態檔案都會在STATIC_ROOT裡面存在。因為一個專案可能包含多個app,所以可以在STATICFILES_DIRS中可以建立site資料夾(具體可以根據app名稱命名),將每個app的靜態檔案分離,相當於名稱空間一樣的作用(具體結構可參考Django專案搭建以及相應目錄介紹)。

五、修改STATIC_ROOT檔案路徑,如下圖所示:

修改STATIC_ROOT後程式碼範例

注:部署django專案的時候需要用到STATIC_ROOT ,它是收集所有的靜態檔案,執行完python manage.py collectstatic後,將靜態檔案複製到STATIC_ROOT指定的目錄中。

六、修改多媒體路徑,如下圖所示:

修改多媒體路徑後的程式碼範例

補充:STATIC_URL指出瀏覽器存取靜態資源的“根路徑”,即該路徑為顯示在瀏覽器位址列中的值,其本質就是利用STATIC_URL的具體內容,來對映STATIC_ROOT。因為使用者在瀏覽的時候不可能輸入伺服器本地地址對靜態資源進行存取,而是需要通過url的形式存取。

總結

到此這篇關於Django專案中動態設定靜態檔案路徑的文章就介紹到這了,更多相關Django動態設定靜態檔案路徑內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com