python
  • html
  • model-view-controller
  • webserver
  • web2py
  • 2017-08-31 55 views 0 likes 
    0

    我正在使用web2py,我想显示从控制器中的python函数返回的html代码。如何使用Web2Py在视图中显示控制器中的html?

    我有以下控制器(default.py):

    def index(): 
        return {"html_code":"<img src='https://static1.squarespace.com/static/54e8ba93e4b07c3f655b452e/t/56c2a04520c64707756f4267/1493764650017'>"} 
    

    这是我的看法(的index.html):

    {{=html_code}} 
    

    当我访问的网站(http://127.0.0.1:8000/test/default/index),我见以下内容(而不是图片)

    <img src='https://static1.squarespace.com/static/54e8ba93e4b07c3f655b452e/t/56c2a04520c64707756f4267/1493764650017'> 
    

    如何将HTML_code变量呈现为html代替纯文本?

    回答

    0

    尝试使用XML()辅助

    def index(): 
    return {"html_code":XML("<img src='https://static1.squarespace.com/static/54e8ba93e4b07c3f655b452e/t/56c2a04520c64707756f4267/1493764650017'>")} 
    
    0

    默认情况下,通过{{=...}}写入视图的任何内容逃脱。为了抑制逃逸,您可以使用XML()帮手:

    {{=XML(html_code)}} 
    

    或者,您也可以构建通过服务器端的HTML佣工的HTML而不是生成原始的HTML:

    def index(): 
        return {"html_code": IMG(_src='https://static1.squarespace.com/static/54e8ba93e4b07c3f655b452e/t/56c2a04520c64707756f4267/1493764650017')} 
    

    然后您就可以留下视图,因为您拥有它:

    {{=html_code}} 
    

    上面假设您通过自己的代码生成HTML。如果有问题的HTML来自不可信来源(例如,用户输入),则将其写入视图而不转义会带来安全风险。在这种情况下,你可以有XML()帮手做一些消毒(即,它会限制所允许的HTML标签和属性到安全白名单)(参见here有详细介绍):

    {{=XML(html_code, sanitize=True)}} 
    
    相关问题