【发布时间】:2026-02-14 14:00:02
【问题描述】:
有谁知道在 django 中动态切换 TEMPLATE_DIR 的方法。
我需要为移动版本创建一组模板,并希望模板位于自己的目录中而不是根模板目录中,即:我想要 2 个模板目录“模板”和“移动模板”而不是后者必须使用“模板/移动”。
我必须编写自己的模板加载器吗?
【问题讨论】:
有谁知道在 django 中动态切换 TEMPLATE_DIR 的方法。
我需要为移动版本创建一组模板,并希望模板位于自己的目录中而不是根模板目录中,即:我想要 2 个模板目录“模板”和“移动模板”而不是后者必须使用“模板/移动”。
我必须编写自己的模板加载器吗?
【问题讨论】:
您可以在设置文件中设置多个模板目录,Django 将按照您列出它们的顺序搜索它们。问题是它不在乎您是否需要目录 a 或 b 中的 template_x.html。如果您在目录 a 和 b 中有相同的 template_x,它将从最先列出的那个中提取,这可能会造成混淆。一个好的方法如下:
在某处只有一个名为“模板”的模板目录。在此文件夹内有一个名为“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',
)
【讨论】: