我想在我的表单布局中添加HTML layout object,重用现有模板,但我无法让它工作。这就是我在做的事情:
HTML(loader.get_template('my-template.html'))
但是get_template
给了我一个Template
,而不是一个字符串,它就会中断。
我可以做些其他事情让这个工作吗?
更多理由:
我正在寻找原始模板字符串,因为我想重用布局组件的模板,稍后将在所访问页面的上下文中呈现该模板。渲染时,我希望它的行为与在普通模板处理步骤中渲染一样。
我想避免预渲染,因为它对我来说似乎不安全,因为我认为这不能保证这会让我回到与我在磁盘中完全相同的模板字符串。我真的希望避免出现另一个奇怪且难以调试的问题。
这是我目前的工作黑客(即使是在Heroku上):
# TODO: this is a hack
template_str = open(os.path.join(settings.BASE_DIR, 'templates', 'my-template.html')).read()
...
HTML(template_str),
...
答案 0 :(得分:1)
您可以在Template.source
:
template = loader.get_template('my-template.html')
HTML(template.source)
但是我觉得这样做会更有效(而且不那么神奇):
HTML('{% include "my-template.html" %}')
答案 1 :(得分:0)
您可以使用render_to_string()
:
from django.template.loader import render_to_string
html = render_to_string('your-template.html', {})
HTML(html)