python - 如何在 Django 的 latex 模板中正确设置变量

标签 python django django-templates latex

我想通过 django View 用 latex 创建一个 pdf。我创建了 View 并设置了一个 latex 模板,除了一件事外它工作正常。当我在 latex 模板中放置一个变量时,我必须在大括号周围使用空格,如下所示:

\somevalue{ {{variable}} }

否则django 不会检查它是否是一个变量。 Latex 语法检查器已经告诉我“} 周围出现意外空格?!”。我可以通过我的 View 将变量传递到模板中并创建 pdf,但随后插入的文本周围有空格。

有人知道如何解决这个问题吗?

最佳答案

根据一些谷歌研究,我建议将模板引擎切换到 Jinja,它受 Django 支持并具有可配置的语法。 请注意,我尚未对此进行全面测试。

这是您的 Latex 模板的样子:

\somevalue{((variable))}

最重要的部分是设置 variable_start_stringvariable_end_string 选项:

>>> import jinja2
>>> env = jinja2.Environment(variable_start_string='((', variable_end_string='))')
>>> t = env.from_string("\somevalue{((variable))}")
>>> t.render(name='Attention!')
'\\somevalue{Attention!}'

Jinja's switching documentation概述了(少数)语法差异。来自常见问题解答:

The default syntax of Jinja2 matches Django syntax in many ways. However this similarity doesn’t mean that you can use a Django template unmodified in Jinja2. For example filter arguments use a function call syntax rather than a colon to separate filter name and arguments. Additionally the extension interface in Jinja is fundamentally different from the Django one which means that your custom tags won’t work any longer.

Django 1.9和 1.8 以及其他版本可能内置了对 Jinja 的支持。

我还没有找到在 Django 中配置 Jinja 语法的例子,我现在无法测试这个,但我相信你需要改变 TEMPLATES['OPTIONS'] 需要的字典:

    block_start_string='(#',
    block_end_string='#)',
    variable_start_string='((',
    variable_end_string='))',
    comment_start_string='((#',
    comment_end_string='#))',

关于python - 如何在 Django 的 latex 模板中正确设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35085077/

相关文章:

javascript - 在 JavaScript 文件中使用 Django 模板标签

python - 如何将参数传递给Azure机器学习服务中的训练脚本?

python - 如何将系列值添加到日期/日期时间对象?

python - 使用 Facebook Prophet 在具有多个时间序列的数据框中进行时间序列预测

Django 和 docker : Should we use python virtualenv

django - 使用 Django 和 nginx 通过个人 SSL 证书登录

python - TypeError : expected str,字节或os.PathLike对象,不是Django中的元组

python - 通过将现有列表乘以 1 来创建新列表对象是否等同于进行深度复制?

python - 如何创建一组对象来存储信息?

django-templates - Django 模板扩展标签问题