我在web2py工作,我正在尝试从控制器打印出html代码,这是用python编写的。问题是,即使我在python中的字符串中编写html,页面也会像正常的html一样呈现此字符串。这似乎有一个简单的解决方法,但我一直无法找到答案。这是具体的代码。
return ('Here is the html I'm trying to show: <img src= {0}>'.format(x))
结果页面显示“这是我试图显示的html:”然后其余部分为空白。如果我检查页面,其余代码仍然存在,这意味着它正在被读取,只是没有显示。所以我只需要一种方法来保持字符串中的html不被解释为html。有什么想法吗?
答案 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: <img src=/static/myimage.png>
以上内容将以下内容返回浏览器:
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))