如何在脚本中使用 django-template 而不是 jinja2?

Posted

技术标签:

【中文标题】如何在脚本中使用 django-template 而不是 jinja2?【英文标题】:How to use django-template in a script instead of jinja2? 【发布时间】:2012-02-12 06:48:51 【问题描述】:

我正在为 Django 编写一个管理命令,并创建了模板文件,我解析这些文件以创建新文件。

到目前为止,我使用的是 Jinja2,但由于它是一个 Django 管理命令,我想切换到基于 django 的模板。

你知道如何在 django 管理命令文件中设置模板环境吗?

我正在寻找的是相当于这个 jinja2 代码:

env = Environment(loader=PackageLoader('modulo.bin', 'templates/plugin_templates'))

编辑:好的,在管理命令中它会起作用。但是如果我想在普通的 python 脚本中使用 django-template 怎么办?

谢谢,

雷米

【问题讨论】:

【参考方案1】:

您无需设置任何环境。你在一个 Django 命令中,你可以使用 Django 模板。

【讨论】:

好的,但在这种情况下,我的模板需要位于我的项目模板目录中。我想为与项目模板目录分开的命令创建一个特定的模板目录。但是在这里,我只需要在 INSTALLED_APP 中添加我的 bin 应用程序,它就可以工作了。谢谢。【参考方案2】:

Django 管理命令可以访问所有 django 环境变量,就像您通常在视图中一样。

要加载模板,为其分配一些上下文,然后保存结果:

from django.template.loader import render_to_string

c = 'var':'value','var2':'value2'  # values you want to send to the template
content = render_to_string('template.html',c) # rendered template

这遵循正常的 django 模板规则,所以 template.html 应该是可加载的(换句话说,它应该在 django 查找模板的“正常”位置;或者在 TEMPLATE_DIRS 中列出的目录中)。

【讨论】:

以上是关于如何在脚本中使用 django-template 而不是 jinja2?的主要内容,如果未能解决你的问题,请参考以下文章

django-template 中的不同模型

django-template层

Django-template模板语言

VSCode 自定义代码格式和语言自动缩进(Django-Template 缩进)

直接从 django-template 发送电子邮件

是否可以使用标准库在 Go 中嵌套模板?