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

发布于 2024-12-27 13:47:47 字数 407 浏览 0 评论 0原文

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

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

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

我正在寻找相当于此 jinja2 代码:

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

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

谢谢,

雷米

I am writing a management command for Django and I created template files that I parse to create new files.

So far to do that I used Jinja2 but since it is a Django management commands, I would like to switch to django based template.

Do you know how I can set up the template environnement in a django management command file ?

What I am looking for is the equivalent of this jinja2 code :

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

EDIT: Ok in management commands it will work. But what if I want to use django-template in a normal python script ?

Thanks,

Rémy

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ヅ她的身影、若隐若现 2025-01-03 13:47:47

您不需要设置任何环境。您在 Django 命令中,可以使用 Django 模板。

You don't need to set up any environment. You're in a Django command, you can use Django templates.

贵在坚持 2025-01-03 13:47:47

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 management commands have access to all django environment variables, as you would normally have in the view.

To load a template, assign it some context, and save the results:

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

This follows the normal django template rules, so template.html should be loadable (in other words, it should be in the 'normal' places django looks for templates; or in a directory listed in TEMPLATE_DIRS).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文