为什么django中模板和css的绝对路径? (这不是一个坏习惯吗?)

时间:2011-08-15 11:51:04

标签: python django

在django中,文档要求使用绝对路径而不是相对路径。

然后,他们如何管理可移植性?

如果我在项目文件夹中有我的模板,那么即使重命名该文件夹也会导致破损..!

那么这种做法背后的原因是什么?

请解释一下?

2 个答案:

答案 0 :(得分:1)

您可以发布该文档的链接吗?

在Django中,您可以在settings.py中配置模板的搜索路径(通过TEMPLATE_DIRS变量)。然后,在视图中,您渲染一个模板,该模板相对于TEMPLATE_DIRS中包含的路径之一命名其文件。这样,无论何时移动模板目录,您只需修改settings.py

即可

对于静态文件,如CSS文档,Django不需要了解它们(除非你通过django本身提供静态文件,django的文档不鼓励):你只需要告诉你的web服务器在哪里找到他们。

答案 1 :(得分:0)

我将环境从Linux桌面切换到Windows笔记本电脑,因此硬编码路径对我来说也不起作用。

可能有更好的方法可以做到这一点,但是我写了这个函数,它位于我的settings.py的顶部,以从项目中的相对路径获取绝对路径:

#settings.py
import os

def map_path(directory_name):
    return os.path.join(os.path.dirname(__file__), \
        directory_name).replace('\\', '/')

这让我可以这样做:

MEDIA_ROOT = map_path('static')
TEMPLATE_DIRS = (
    map_path('templates'),
)

“static”和“templates”存在于我的项目根目录下。希望能帮到你。