使用 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'),
]