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