我发现Jinja2模板具有.blocks
属性,可以访问命名块。但是,它不提供评论数据(可以理解)。
是否有程序化或可靠的方式从Jinja2模板中检索评论内容? (理想情况下,我正在避免编写正则表达式,因为我认为解析是内置的...我只是没有找到它)。
以下是一个例子:
鉴于这个Jinja2模板:
{#
Comment block content.
#}
{% block main %}
This is the main block. We don't really care about it.
{% endblock %}
...我希望能够检索以下内容:
评论栏内容。
是否有可靠的,无证的方式可靠地获取此内容?
答案 0 :(得分:0)
我浏览了jinja的源代码和其他文章,似乎没有办法本机收集jinja2评论。 Per Martijin Peter对Jinja2 Inline Comments的回答,{# #}
语法可以用作内联注释,但它们主要用于禁用模板的一部分
回答
{#..#}仅用于禁用模板的一部分
<强>注释强>
...是的,{#...#}用于评论,包括评论(禁用)模板的一部分。
作为一种解决方法,您可以使用正则表达式(您声明不希望使用它),也可以切换到标准HTML注释并使用BeautifulSoup。使用BeautifulSoup确实支持轻松收集评论
template = '''<!--
Comment block content.
-->
{% block main %}
This is the main block. We don't really care about it.
{% endblock %}'''
from bs4 import BeautifulSoup, Comment
soup = BeautifulSoup(template, 'html.parser')
comments = soup.findAll(text=lambda text: isinstance(text, Comment))
print(comments)
>>>['\nComment block content.\n']