1.用 pandas.DataFrame.to_html() 可以直接轉成 html 的 table,
一般處理資料或者報表我習慣使用 pandas,pandas.DataFrame 很友善處理二維表、excel等,也可以很友善地把從資料庫擷取的資料轉成 DataFrame 結構。用 pandas.DataFrame.to_html() 可以直接轉成 html 的 table,不過要控制前端顯示還是得用 css,或者直接用 bootstrap 架構。
2.不過要控制前端顯示還是得用 css,或者直接用 bootstrap 架構
下面的回答隻管你如何美化html,不管你如何生成html.
html 是超文本,可以由css 和Javascript 來控制html 的外觀。
推薦用Bootstrap
Bootstrap
http://getbootstrap.com/
3.jinja2
需要任意py36
#pip install -U Incantation
pip install Incantation-0.3.3-py3-none-any.whl
參考https://github.com/thautwarm/Incantation doc
解決Python查詢Mysql資料庫資訊亂碼問題
#最後通過嘗試将 json 子產品導入,利用其 dumps 方法,問題得到解決
http://blog.csdn.net/mori66/article/details/54669232
https://www.cnblogs.com/jzss/p/5567318.html
py生成html
官網例子
<a href="https://github.com/thautwarm/Incantation">https://github.com/thautwarm/Incantation</a>
<code>#!/usr/bin/python</code>
<code># -*-coding:utf-8-*-</code>
<code>import</code> <code>os</code>
<code>import</code> <code>sys</code>
<code>import</code> <code>pymysql</code>
<code>import</code> <code>json</code>
<code>from</code> <code>incantation.Module.CSS.Grid </code><code>import</code> <code>container, col, row, grid, section</code>
<code>from</code> <code>incantation.Module.CSS.Color </code><code>import</code> <code>Indigo</code>
<code>from</code> <code>incantation.Module.CSS.Helpers </code><code>import</code> <code>align, left_align, right_align, center_align</code>
<code>from</code> <code>incantation.Module.CSS.Media </code><code>import</code> <code>video_container</code>
<code>from</code> <code>incantation.Module </code><code>import</code> <code>abst</code>
<code>from</code> <code>incantation.Module </code><code>import</code> <code>blockquote</code>
<code>from</code> <code>incantation.Module.CSS.Table </code><code>import</code> <code>table</code>
<code>from</code> <code>incantation.Module.abst </code><code>import</code> <code>default_conf, gen_helper, Seq</code>
<code>from</code> <code>incantation.template </code><code>import</code> <code>Page</code>
<code>from</code> <code>incantation.Module.Component.Badges </code><code>import</code> <code>collections, dropdown, badge, collapsible</code>
<code>from</code> <code>incantation.Module.Component.Icons </code><code>import</code> <code>icon</code>
<code>from</code> <code>incantation.Module.Component.Button </code><code>import</code> <code>FAB, raised</code>
<code>from</code> <code>incantation.Module.Component.Form </code><code>import</code> <code>form, input_field</code>
<code>from</code> <code>incantation.Module.Component.Navbar </code><code>import</code> <code>navbar</code>
<code>def</code> <code>myPage(</code><code>list</code><code>):</code>
<code> </code><code>main </code><code>=</code> <code>container()</code>
<code> </code><code>title </code><code>=</code> <code>blockquote(</code><code>"伺服器對應部署的應用資訊"</code><code>)</code>
<code> </code><code>users </code><code>=</code> <code>table([</code><code>"ip"</code><code>, </code><code>"環境"</code><code>,</code><code>"應用類型"</code><code>,</code><code>"應用名稱"</code><code>,</code><code>"額外描述"</code><code>],</code><code>list</code><code>)</code>
<code> </code><code>main.contains(Seq(</code>
<code> </code><code>col(Seq(title, users),grid(l</code><code>=</code><code>8</code><code>, s</code><code>=</code><code>8</code><code>, m</code><code>=</code><code>8</code><code>)),</code>
<code> </code><code>))</code>
<code> </code><code>page </code><code>=</code> <code>Page(main)</code>
<code> </code><code>page.write(to</code><code>=</code><code>'../ip.html'</code><code>)</code>
<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>
<code> </code><code>iplist_all </code><code>=</code> <code>[]</code>
<code> </code><code>conn </code><code>=</code> <code>pymysql.connect(</code><code>"172.1.1.1"</code><code>, </code><code>"root"</code><code>, </code><code>"password"</code><code>, </code><code>"cmdb"</code><code>,charset</code><code>=</code><code>'utf8'</code><code>)</code>
<code> </code><code>##此處要指定charset為utf-8(一般資料庫編碼都是utf8或utf8mb4之類),否則讀取出的中文會亂碼</code>
<code> </code><code>cur </code><code>=</code> <code>conn.cursor()</code>
<code> </code><code>#cur.execute("SELECT ip,env from hosts ORDER BY 2, 1")</code>
<code> </code><code>cur.execute(</code><code>"SELECT a.ip, a.env, b.item_type, b.item_name, b.description FROM HOSTS a LEFT JOIN applications b ON a.ip = b.ip ORDER BY 2,1"</code><code>)</code>
<code> </code><code>for</code> <code>row </code><code>in</code> <code>cur.fetchall():</code>
<code> </code><code>iplist </code><code>=</code><code>[]</code>
<code> </code><code>iplist </code><code>=</code> <code>list</code><code>(row)</code>
<code> </code><code># iplistj = json.dumps(iplist,ensure_ascii=False)</code>
<code> </code><code># print(iplist)</code>
<code> </code><code>iplist_all.append(iplist)</code>
<code> </code><code>myPage(iplist_all)</code>
<code> </code><code>cur.close()</code>
沒有什麼邏輯,模拟即可。
2.拷貝static,其實github已經實作,隻要按照那個目錄排列即可
點選ip,顯示效果
本文轉自 liqius 51CTO部落格,原文連結:http://blog.51cto.com/szgb17/2047983,如需轉載請自行聯系原作者