为什么在jinja2 Python中使用“| safe”

2024-09-27 00:19:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我跟随一个烧瓶教程,他在jinja2模板中使用“| safe”。为什么我们需要这个管道符号和保险箱?在

不使用safe,它会打印所有的html标记。在

通过使用| safe,它显示了正确的格式。为什么会这样工作?在

以下是jinja2代码:

{% extends "layout.html" %}

{% block body %}
    <h1>{{article.title}}</h1>
    <small>Written by {{article.author}} on {{article.create_date}}</small>
    <hr>
    <div>
        {{article.body | safe}}
    </div>
{% endblock %}

Tags: 标记div模板jinja2管道烧瓶htmlarticle
2条回答

DOCS

When generating HTML from templates, there’s always a risk that a variable will include characters that affect the resulting HTML. There are two approaches:

  • manually escaping each variable; or
  • automatically escaping everything by default.

Jinja supports both.

在默认情况下自动转义所有内容的模式下,要将内容标记为安全的,因此不需要转义,请使用筛选器:

| safe

Working with automatic escaping。在

使用| safeJinja2将打印变量中的符号,这意味着它不会将“危险”符号转换为html实体(Jinja2默认情况下是为了逃避“危险”符号)。如果信任变量的内容,请使用此选项,因为在相反的情况下可能存在漏洞,例如XSS。在

相关问题 更多 >

    热门问题