编程语言
首页 > 编程语言> > python-如何在Django的Latex模板中正确设置变量

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

作者:互联网

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

\somevalue{ {{variable}} }

否则django不会检查它是否为变量.乳胶语法检查器已经告诉我“不希望} ?!附近有空格”.我可以通过视图将变量传递到模板中,并创建pdf,但是插入的文本周围有空格.

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

解决方法:

我发现的解决方案是在渲染模板后删除多余的空格:

template = select_template(self.get_template_names())
latex_content = template.render(context)
latex_content = re.sub(r'\{ ', '{', latex_content)
latex_content = re.sub(r' \}', '}', latex_content)

这样的好处是不需要额外的模板标签来填充模板.但是,这是要求模板编写者了解此行为并在使用花括号的任何位置都将其考虑在内的缺点.

在实践中,最好编写一个自定义的Template类来处理此问题.

编辑

请注意,使用此方法时,没有理由使用空格作为分隔符而不是任何其他字符.为了使模板编写者/读者更加清楚,您可以使用其他会打铃的字符.例如:

template.tex

\somevalue{§{{ variable }}§}

views.py

template = select_template(self.get_template_names())
latex_content = template.render(context)
latex_content = re.sub(r'\{§', '{', latex_content)
latex_content = re.sub(r'§\}', '}', latex_content)

这清楚地表明,如果有空间,那是预期的.我认为已经很清楚,§各处都不打算显示它.

标签:django-templates,latex,python,django
来源: https://codeday.me/bug/20191027/1944253.html