比如 一个变量,test='''<span style="font-size:24px;color:#f546ff;">test</span>'''
当嵌入HTML模板里时,就会变成:
<span style="font-size:24px;color:#f546ff;">sgfszhfsz,</span>
而不是直接输出,应该怎么操作才能直接输出呀?
又错了,左边的< 变成 & lt; 右边的变成 & gt; 了
应该是被转码了,要怎么才能不被转码呀
第1个回答 2011-07-27
我的测试运行正常,以下是代码和运行结果,供你参考。python 2.7
源码:
from bottle import template
from bottle import route, run
@route('/:name')
def index(name='World'):
htmltext=template('Hello {{name}}!', name='''<span style="font-size:24px;color:#f546ff;">test</span>''')
return '<b>Hello %s!</b>' % htmltext
run(host='localhost', port=8080)
运行结果:
Hello Hello <span style="font-size:24px;color:#f546ff;">test</span>!!本回答被提问者采纳
源码:
from bottle import template
from bottle import route, run
@route('/:name')
def index(name='World'):
htmltext=template('Hello {{name}}!', name='''<span style="font-size:24px;color:#f546ff;">test</span>''')
return '<b>Hello %s!</b>' % htmltext
run(host='localhost', port=8080)
运行结果:
Hello Hello <span style="font-size:24px;color:#f546ff;">test</span>!!本回答被提问者采纳
第2个回答 2017-08-24
虽然过去了很多年,但是我觉得还是回答一下,给后来遇到的人提个醒,
bottle为了防止XSS攻击,所以所有html都转义成字符处理了,要想用html,请使用{{!name}}
官网例子:
>>> template('Hello {{name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
>>> template('Hello {{!name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
bottle为了防止XSS攻击,所以所有html都转义成字符处理了,要想用html,请使用{{!name}}
官网例子:
>>> template('Hello {{name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
>>> template('Hello {{!name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
第3个回答 2017-10-23
HTML特殊字符转义自动防止XSS攻击。可以用感叹号启动表达式以禁用该表达式的转义:
>>> template('Hello {{name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
>>> template('Hello {{!name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
>>> template('Hello {{name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
>>> template('Hello {{!name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
第4个回答 2011-07-28
用django的飘过.......