首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将html作为变量从python flask传递到html?

如何将html作为变量从python flask传递到html?
EN

Stack Overflow用户
提问于 2017-02-16 19:03:42
回答 3查看 2.1K关注 0票数 4

在此示例中:

代码语言:javascript
运行
复制
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中,我有这样的东西:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Game</title>
    </head>
    <body>
    {{ results }}

    </body>
</html>

结果是一个html页,它不会解释

标签。因此,我得到了一个如下所示的页面:

代码语言:javascript
运行
复制
<p>Test One</p><p>Test Two</p>
EN

回答 3

Stack Overflow用户

发布于 2017-02-16 19:06:17

您可以转义HTML:

代码语言:javascript
运行
复制
{{ results|safe}}

或者使用Python

代码语言:javascript
运行
复制
import jinja2
results = jinja2.escape(results)
票数 4
EN

Stack Overflow用户

发布于 2017-02-16 21:04:46

框架在结果变量中对HTML进行转义,以防止安全漏洞。理想情况下,您希望将HTML保留在模板中,而不是通过变量传递。实现所需内容的最佳方法是迭代结果变量中的值,并将其包装在模板中的p标记中。这可以像这样完成:

代码语言:javascript
运行
复制
<!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/

票数 0
EN

Stack Overflow用户

发布于 2017-06-16 23:56:39

试试这个:

代码语言:javascript
运行
复制
from flask import Markup
results = Markup(results)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42272088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档