为 HTML 布局对象重用模板

Reuse template for HTML layout object

我想在我的表单布局中添加一个 HTML layout object,重新使用现有模板,但我无法让它工作。这就是我正在做的:

HTML(loader.get_template('my-template.html'))

但是 get_template 给了我一个 Template,而不是一个字符串,它断了。

我可以做其他事情来让它工作吗?

编辑

更多理由:

我正在寻找原始模板字符串,因为我想重新使用 布局组件的模板,该模板稍后将在所访问页面的上下文中呈现。当它被渲染时,我希望它表现得像在正常的模板处理步骤中渲染的那样。

我想避免预渲染,因为它对我来说似乎不安全,因为我认为不能保证这会给我返回与磁盘中的模板字符串完全相同的模板字符串。我真的很想避免出现另一个奇怪且难以调试的问题。

编辑2

这是我目前的工作技巧(即使在 Heroku 上):

# TODO: this is a hack
template_str = open(os.path.join(settings.BASE_DIR, 'templates', 'my-template.html')).read()

    ...
    HTML(template_str),
    ...

您可以使用 render_to_string():

from django.template.loader import render_to_string

html = render_to_string('your-template.html', {})
HTML(html)

您可以在 Template.source:

访问未修改的模板字符串
template = loader.get_template('my-template.html')
HTML(template.source)

但是我认为这样做会更有效率(并且不那么神奇):

HTML('{% include "my-template.html" %}')