Templates 使用Jinja2,是否可以禁用标记和/或过滤器?

Templates 使用Jinja2,是否可以禁用标记和/或过滤器?,templates,jinja2,Templates,Jinja2,我有保存在数据库中的模板(我的客户将创建它们)。我不希望我的客户能够扩展他们的模板(我知道,我知道,这是非常邪恶的)。我确实希望它们能够包含代码片段,但不能扩展模板。如何禁用或删除{%extends%}标记,以及如何删除过滤器,如果我以后也选择这样做的话?如果模板保存在数据库中,您必须能够在保存之前过滤扩展。弄乱模板的源代码是不可靠的,看起来像是输入清理,尽管是在不同的输入级别上,但您不必弄乱源代码。您可以通知用户:extends not allowed并阻止te save。您仍然需要解析模板源

我有保存在数据库中的模板(我的客户将创建它们)。我不希望我的客户能够扩展他们的模板(我知道,我知道,这是非常邪恶的)。我确实希望它们能够包含代码片段,但不能扩展模板。如何禁用或删除
{%extends%}
标记,以及如何删除过滤器,如果我以后也选择这样做的话?

如果模板保存在数据库中,您必须能够在保存之前过滤扩展。

弄乱模板的源代码是不可靠的,看起来像是输入清理,尽管是在不同的输入级别上,但您不必弄乱源代码。您可以通知用户:extends not allowed并阻止te save。您仍然需要解析模板源以查找有问题的标记。Jinja2是否提供任何解析API?否则你将不得不重新实现它,这是不好的。Jinja有一个解析API。在父模板中查找块非常容易:template=env.from_string(content_to_save)后跟:for each in template.blocks。。。。如果你不能定义一个块,你就不能扩展它。哇,听起来很棒。能在你的回答中提供一个简短的例子吗?我想这对OP和其他人都很有用。