有没有人知道如何动态切换django中的TEMPLATE_DIR。
我需要为移动版本创建一组模板,并希望模板位于自己的dir而不是根模板目录内,即:我想要2个模板目录“模板”和“mobile_templates”而不是必须使用'模板/移动'作为后者。
我是否必须编写自己的模板加载器?
答案 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',
)