如何在脚本中使用 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?的主要内容,如果未能解决你的问题,请参考以下文章