Django模板目录切换

时间:2009-09-28 08:01:06

标签: django django-templates

有没有人知道如何动态切换django中的TEMPLATE_DIR。

我需要为移动版本创建一组模板,并希望模板位于自己的dir而不是根模板目录内,即:我想要2个模板目录“模板”和“mobile_templates”而不是必须使用'模板/移动'作为后者。

我是否必须编写自己的模板加载器?

1 个答案:

答案 0 :(得分:2)

您可以在设置文件中设置多个模板目录,Django将按您列出的顺序搜索它们。问题是它不关心你是否需要来自目录a或b的template_x.html。如果你在目录a和b中有相同的template_x,那么它将首先列出哪个可能令人困惑。一个好方法如下:

只有一个名为'templates'的模板目录。在这个文件夹里面有一个名为'mobile'的文件夹和一个名为'default'(或其他)的模板。然后,当您调用模板时,您也必须使用目录路径。

在您看来:

# some mobile view (everything omitted brevity)
get_template('mobile/some_template.html')

# some normal view (everything omitted brevity)
get_template('default/some_template.html')

在模板中:

移动模板:

{% extends 'mobile/base.html' %}

普通模板:

{% extends 'default/base.html' %}

设置文件:

TEMPLATE_DIRS = (
    'D:/some/path/to/templates',
)