html页面展示Json样式 by python

最近有个需求,从数据库提取json,接口返回html,这里就涉及到用python生成个html,flask返回该html。
第一版做出来Json都在一起,看着很吃力,于是想用转化成json展开的格式。

实现方式:

  1. python 用str 拼一个html
  2. 用html 页面展示 json 样式

用html 页面展示 json 样式

<html>
    </head>  </head>
    <body>
            <script>
                    var str = {"name":"菜鸟教程", "site":"http://www.runoob.com"}
                    str_pretty2 = JSON.stringify(str, null, 4) //使用四个空格缩进
                    document.write("<pre>" + str_pretty2 + "</pre>" ); // pre 用于格式化输出
            </script>
      </body>
</html>

自己建个html,打开就是这样


image.png

下面是python实现:

body = '<html><style>pre {outline: 1px solid #ccc; } p {background-color: #C0C0C0; }</style></head><body><h3>test</h3<script>'
body = body + 'var row =  {\"name\":\"菜鸟教程\", \"site\":\"http://www.runoob.com\"} ' + """ 
            """

body = body + 'row = JSON.stringify(row, null, 4)'  + """ 
            """

body = body + 'document.write(\"<pre>\" + row+ \"</pre>\"); ' + """
            """
body = body + '</script></body></html>'

遇到的坑1:

一开始没有加""" ,html里的script生成都在一坨里面,大概就是这个样子

var str = {"name":"菜鸟教程", "site":"http://www.runoob.com"} str_pretty2 = JSON.stringify(str, null, 4) document.write("<pre>" + str_pretty2 + "</pre>" );

所以要换行,加了"""就好了

            body = body + 'var row =  {\"name\":\"菜鸟教程\", \"site\":\"http://www.runoob.com\"} ' + """ 
            """

遇到的坑2:
之前运行在python2.7上,最近部署了一台python3,又蹦了。

业务逻辑:post 接口将json 存入数据库, get 接口把数据库的json展示在页面上,检测下来数据库里 Json boolean 字段全成Ture,False,因为post插入数据库,json要转化成str,写进sql 里面,这就涉及到python json 和str 互转的问题。理论上 Json里面是ture,dict 里面是大写,不用json.dump() json,loads()基本就废了。

原代码:

@app.route('/set', methods=['POST'])
def post_Data():
    api_value = request.args.get('api', '')
    operateHandler = OperateManagement()
    return operateHandler.saveResult(api_value, request.json, request.remote_addr)

修改后

@app.route('/set', methods=['POST'])
def post_Data():
    api_value = request.args.get('api', '')
    operateHandler = OperateManagement()
    return operateHandler.saveResult(api_value, json.dumps(request.json), request.remote_addr)

然后就好了

记得import json

参考文档:
使用 Python 自动生成 HTML
https://blog.csdn.net/weixin_41697143/article/details/87607578

html页面展示Json样式
https://www.runoob.com/try/try.php?filename=tryjson_stringify

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容