如何防止Python在web2py中像对待HTML一样对待字符串?

如何防止Python在web2py中像对待HTML一样对待字符串?,python,html,python-3.x,web2py,Python,Html,Python 3.x,Web2py,我在web2py中工作,我试图从控制器中打印html代码,这是用python编写的。问题是,即使我在python中用字符串编写html,页面也会像普通html一样呈现该字符串。这似乎有一个简单的解决办法,但我一直无法找到答案。下面是具体的代码 return ('Here is the html I'm trying to show: <img src= {0}>'.format(x)) 这里显示的结果页面是我试图显示的html:然后其余页面为空。如果我检查页面,代码的其余部分仍

我在web2py中工作,我试图从控制器中打印html代码,这是用python编写的。问题是,即使我在python中用字符串编写html,页面也会像普通html一样呈现该字符串。这似乎有一个简单的解决办法,但我一直无法找到答案。下面是具体的代码

  return ('Here is the html I'm trying to show: <img src= {0}>'.format(x))

这里显示的结果页面是我试图显示的html:然后其余页面为空。如果我检查页面,代码的其余部分仍然存在,这意味着它正在被读取,只是没有显示。所以我只需要一种方法来防止字符串中的html被解释为html。有什么想法吗?

我想您正在尝试在web浏览器中查看此字符串

要获取原始html而不让浏览器渲染它,可以将其包装在标记中:


如果您希望发送HTML标记,但让浏览器将其视为纯文本显示,则只需适当地设置HTTP内容类型标头。例如,在web2py控制器中:

def myfunc():
    ...
    response.headers['Content-Type'] = 'text/plain'
    return ("Here is the html I'm trying to show: <img src={0}>".format(x))
def myfunc():
    ...
    return dict(markup="Here is the html I'm trying to show: <img src={0}>".format(x))
上述操作会将以下内容返回到浏览器:

下面是我试图展示的html:img src=/static/myimage.png

浏览器将显示为:

以下是我试图展示的html:

注意,如果改为使用web2py模板生成响应,则插入的任何HTML标记都将自动转义。例如,您可以有一个myfunc.html模板,如下所示:

{{=markup}}
在控制器中:

def myfunc():
    ...
    response.headers['Content-Type'] = 'text/plain'
    return ("Here is the html I'm trying to show: <img src={0}>".format(x))
def myfunc():
    ...
    return dict(markup="Here is the html I'm trying to show: <img src={0}>".format(x))
在这种情况下,web2py将自动转义通过{{{=markup}}插入的内容,因此无需显式调用xmlescape。

已尝试使用rHere显示的html是:.formatx?否则,请注意,它已过时,并且在受支持的情况下,它可能不会产生所需的格式。标记可能会以与其他内容不同的格式出现在单独的行上。