【问题标题】:How to use django-template in a script instead of jinja2?如何在脚本中使用 django-template 而不是 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 怎么办?

谢谢,

雷米

【问题讨论】:

    标签: django django-templates jinja2


    【解决方案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 中列出的目录中)。

    【讨论】:

      猜你喜欢
      • 2021-01-25
      • 2017-11-08
      • 1970-01-01
      • 2010-09-23
      • 2020-07-04
      • 2022-12-21
      • 2019-01-29
      • 2020-08-04
      • 2019-03-04
      相关资源
      最近更新 更多