Flask以文本形式返回变量,并以引号代替html元素

Flask以文本形式返回变量,并以引号代替html元素,flask,jinja2,Flask,Jinja2,我正在尝试向jinga模板插入一个html文本,该文本将作为python脚本中的变量提交 Python: @app.route('/faq', defaults={'faq_id': "keine_id"}) @app.route('/faq/<string:faq_id>') def faq(faq_id): return render_template('faq.html', beschreibung=f"<p>{data['be

我正在尝试向jinga模板插入一个html文本,该文本将作为python脚本中的变量提交

Python:

@app.route('/faq', defaults={'faq_id': "keine_id"})
@app.route('/faq/<string:faq_id>')
def faq(faq_id):
    return render_template('faq.html', beschreibung=f"<p>{data['beschreibung']}</p>")
@app.route('/faq',默认值={'faq\u id':“keine\u id”})
@app.route(“/faq/”)
def常见问题解答(常见问题解答id):
返回渲染模板('faq.html',beschreibung=f“{data['beschreibung']}

”)
HTML:


{{titel}

{{beschreibung}}
如果我访问该网页,该网页会将我的变量作为文本而不是html代码加载,取而代之的是在我的文本周围有引号,段落标记会被忽略:

有人知道怎么解决这个问题吗


致以最良好的祝愿

您应该使用jinja2过滤器来抑制自动转义

{{ beschreibung | safe }}

您应该使用jinja2过滤器来抑制自动转义

{{ beschreibung | safe }}

使用此方法时,OP应小心
数据['beschreibung']
不包含未经验证的用户输入。如果攻击者能够在其中获得类似于
标记的东西,那么他们可以在前端执行任何JS。@v25是正确的。您应该验证输入,并可能自己执行转义。好的,谢谢你们!使用此方法时,OP应小心
数据['beschreibung']
不包含未经验证的用户输入。如果攻击者能够在其中获得类似于
标记的东西,那么他们可以在前端执行任何JS。@v25是正确的。您应该验证输入,并可能自己执行转义。好的,谢谢你们!