如何在 Django 模板中标记所有变量安全?

The*_*One 2 django django-templates

我有很多由网站管理员生成的内容;我最终将“|safe}}”添加到几乎每个模板变量中。这很烦人。

我可以自动将每个变量标记为安全,并在必要时选择使用转义吗?

Jos*_*mit 5

可以通过使用 Django 模板的自动转义来确定块内的自动转义。

\n\n

正如Django书籍第 9 章中的“如何关闭它”部分所述(查找“自动 HTML 转义”部分中的文本):

\n\n
\n

如果您不希望在每个站点、每个模板级别或每个变量级别自动转义数据,您可以通过多种方式将其关闭。

\n
\n\n

这种按站点方式是有一个基本模板(所有模板都继承自的模板),它简单地指定{% autoescape off %}为所有上下文块的顶部和{% endautoescape %}末尾:

\n\n
\n

自动转义标签将其效果传递到扩展当前模板的模板以及通过该include标签包含的模板,就像所有块标签一样。

\n
\n\n

正如@ChrisPratt 评论的那样:

\n\n
\n

切勿允许将用户提交的内容排除在自动转义之外。

\n
\n

  • 只是要小心,不要让用户提交的内容(评论等)出现在这些标签之间。 (4认同)