如何防止Python在web2py中处理类似HTML的字符串?

时间:2017-07-06 22:41:06

标签: 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:”然后其余部分为空白。如果我检查页面,其余代码仍然存在,这意味着它正在被读取,只是没有显示。所以我只需要一种方法来保持字符串中的html不被解释为html。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果要发送HTML标记但让浏览器对其进行处理并将其显示为纯文本,则只需适当设置HTTP def myfunc(): ... response.headers['Content-Type'] = 'text/plain' return ("Here is the html I'm trying to show: <img src={0}>".format(x)) 标头即可。例如,在web2py控制器中:

xmlescape

另一方面,如果您希望浏览器将响应视为HTML并将其呈现为HTML,并且您只关心它在浏览器中的显示方式(而不是关于返回内容中的实际文本字符),您可以简单地转义HTML标记。 web2py为此提供了def myfunc(): x = '/static/myimage.png' html = xmlescape("<img src={0}>".format(x)) return ("Here is the html I'm trying to show: {0}>".format(html)) 函数:

Here is the html I'm trying to show: &lt;img src=/static/myimage.png&gt;

以上内容将以下内容返回浏览器:

Here is the html I'm trying to show: <img src=/test/image.png>

浏览器将显示为:

myfunc.html

注意,如果您改为使用web2py模板生成响应,则会自动转义插入的任何HTML标记。例如,您可以拥有如下所示的{{=markup}} 模板:

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

在控制器中:

{{=markup}}

在这种情况下,web2py会自动转义通过xmlescape插入的内容(因此无需明确调用["Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 2 at java.lang.String.charAt(Unknown Source) at Haupt.main(Haupt.java:21)"] )。

答案 1 :(得分:0)

我认为你试图在网络浏览器中查看这个字符串。

要获取原始html而不让浏览器呈现它,您可以将其包装在<xmp>标记中:

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