使用 BASE DIR 確保應用程式的可移植性

在應用程式中硬編碼路徑是一個壞主意。應始終使用相對 URL,以便你的程式碼可以在不同的機器上無縫工作。設定它的最好方法是定義一個這樣的變數

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

然後使用此 BASE_DIR 變數來定義所有其他設定。

TEMPLATE_PATH = os.path.join(BASE_DIR, "templates")
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),

]

等等。這可確保你可以在不同的計算機上移植程式碼,而無需擔心。

然而,os.path 有點冗長。例如,如果你的設定模組是 project.settings.dev,你將不得不寫:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))

另一種方法是使用 unipath 模組(可以使用 pip install unipath 安裝)。

from unipath import Path

BASE_DIR = Path(__file__).ancestor(2)  # or ancestor(3) if using a submodule

TEMPLATE_PATH = BASE_DIR.child('templates')
STATICFILES_DIRS = [
    BASE_DIR.child('static'),
]