在此示例中:
from flask import Flask, render_template, redirect, session
app = Flask(__name__)
app.secret_key="secret"
@app.route('/')
def landing():
session['results']="<p>Test one</p>"
session['results']+="<p>Test two</p>"
results=session['results']
return render_template('index.html', results=results)
app.run(debug='True')
在我的html中,我有这样的东西:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Game</title>
</head>
<body>
{{ results }}
</body>
</html>
结果是一个html页,它不会解释
标签。因此,我得到了一个如下所示的页面:
<p>Test One</p><p>Test Two</p>
发布于 2017-02-16 19:06:17
您可以转义HTML:
{{ results|safe}}
或者使用Python
import jinja2
results = jinja2.escape(results)
发布于 2017-02-16 21:04:46
框架在结果变量中对HTML进行转义,以防止安全漏洞。理想情况下,您希望将HTML保留在模板中,而不是通过变量传递。实现所需内容的最佳方法是迭代结果变量中的值,并将其包装在模板中的p标记中。这可以像这样完成:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Game</title>
</head>
<body>
{% for result in results %}
<p>{{ result }}</p>
{% endfor %}
</body>
</html>
模板语言是Jinja2,您可以在这里阅读到:http://jinja.pocoo.org/
发布于 2017-06-16 23:56:39
试试这个:
from flask import Markup
results = Markup(results)
https://stackoverflow.com/questions/42272088
复制相似问题