Webview 中FaultyInfo代码说明

 1 class FaultyInfoHandler(tornado.web.RequestHandler):
 2     def get(self):
 3         import xmlrpc.client
 4         s = xmlrpc.client.ServerProxy(LocalRpcSvcAddr)
 5         info = s.faultyinfo()
 6         self.render("faultyinfo.htm", lists=info)
 7 
 8     def post(self):
 9         import xmlrpc.client
10         s = xmlrpc.client.ServerProxy(LocalRpcSvcAddr)
11         event_id = self.get_argument('event_id', '') 
12         if event_id :
13             evid = event_id.split()
14             num_evid = len(evid)
15             for i in range(num_evid):
16                 t = s.faultyrepair(evid[i])
17                 if t[0] == 0:
18                     flag = True
19                 else:
20                     flag = False
21                     message = '操作失败' + ':' + t[1]
22                     break
23             if flag:    
24                 message = '操作成功!'
25             self.write("<script language=javascript> alert('%s');</script>" % message)
26         info = s.faultyinfo()
27         info_num = len(info)
28         if info_num > 0:
29             self.write('<META HTTP-EQUIV=REFRESH CONTENT=0;'
30                     'URL=/View/faultyinfo>')
31         else:
32             self.write("<script language=javascript> top.location='/';"
33             "</script>")

(r"/View/faultyinfo", FaultyInfoHandler) #打开/View/faultyinfo页面,执行FaultyInfoHandler

分析:

1.class FaultyInfoHandler(tornado.web.RequestHandler):

--FaultyInfoHandler继承tornado.web.RequestHandler

2.def get(self):

--self 指的是FaultyInfoHandler(PS:我是这么认为的,有待确认)

 def get(self) 指重新定义get方法,像get、post这类方法原本在tornado.web.RequestHandler是存在的,这里是重定义

   self.render("faultyinfo.htm", lists=info) 中render方法在FaultyInfoHandler没有重定义,所以用的是继承于tornado.web.RequestHandler定义的render方法

3.def post(self):

--重新定义post方法,加载页面时,默认调用的是FaultyInfoHandler中的get方法,在htm中采用form表单指定post方法时才会调用post方法,htm中使用如下面代码所示:

  1 <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
  2 <head><title></title>
  3 <link href="/css/base.css" type="text/css" rel="stylesheet">
  4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5 <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
  6 <META HTTP-EQUIV="Cache-Control" content="no-cache">
  7 </head>
  8 
  9 <script language=javascript>
 10 function IdentifyRepair(event_id)
 11 {
 12     var form_info = document.getElementById("form_info");
 13     form_info.method = "post";
 14     form_info.action = "/View/faultyinfo?event_id=" + event_id;
 15     form_info.submit();
 16 }
 17 
 18 function GetEventId()
 19 {
 20     var form_info = document.getElementById("form_info");
 21     var evid_list = document.getElementsByName("evid_list");
 22     var evid_info = "";
 23     for(var j=0; j<evid_list.length; j++)
 24     {
 25         evid_info += evid_list[j].value + " ";
 26     }
 27 
 28     form_info.method = "post";
 29     form_info.action = "/View/faultyinfo?event_id=" + evid_info;
 30     form_info.submit();
 31 }
 32 </script>
 33 
 34 <body>
 35 
 36 <table class=title width=700>
 37     <tr>
 38         <td><b>故障信息</b></td>
 39         <td style="font-size:12px;color:#185A73" align=right width=*>{% module Uptime() %}</td>
 40     </tr>
 41 </table>
 42 
 43 <br>
 44 {% if lists != [] %}
 45     <input type="button" onclick="GetEventId()" value="修复全部">
 46 {% end %}
 47 <br>
 48 {% for d in lists %}
 49 <form id="form_info" name="form_info">
 50 <table width=900 border=0 cellspacing=1 cellpadding=1>
 51     <tr id=tblhdr height=22>
 52         <td width=200 align=center>TIME</td>
 53         <td width=300 align=center>EVENT_ID</td>
 54         <td width=150 align=center>MSG_ID</td>
 55         <td width=150 align=center>SEVERITY</td>
 56         <td align=center>
 57             {% if d['event_id'] %}
 58                 <a style="color:#0000ff" 
 59                 href="javascript:IdentifyRepair('{{d['event_id']}}')">修复</a>
 60             {% end %}
 61         </td>
 62     </tr>
 63 
 64     <tr id=row0>
 65         <td align=center>{{ d['time'] }}</td>
 66         <td align=center>{{ d['event_id'] }}</td>
 67         <td align=center>{{ d['msg_id'] }}</td>
 68         <td align=center>{{ d['severity'] }}</td>
 69         <input name="evid_list" type="hidden" value={{ d['event_id'] }} />
 70     
 71     </tr>
 72     <tr> 
 73     <table width=900 >
 74         <tr id=row1>
 75             <td width=20 ></td>
 76             <td width=100 align=left>Product_sn</td>
 77             <td width=780 align=left>{{ d['product_sn'] }}</td>
 78         </tr>
 79         <tr id=row1>
 80             <td width=20 ></td>
 81             <td width=100 align=left >Fault class</td>
 82             <td width=780 align=left>{{ d['faulty_class'] }}</td>
 83         </tr>
 84         <tr id=row1>
 85             <td width=20 ></td>
 86             <td width=100 align=left>Affects</td>
 87             <td width=780 align=left>{{ d['affects'] }}</td>
 88         </tr>
 89         <tr id=row1>
 90             <td width=20 ></td>
 91             <td width=100 align=left>Problem in</td>
 92             <td width=780 align=left>{{ d['problem_in'] }}</td>
 93         </tr>
 94         <tr id=row1>
 95             <td width=20 ></td>
 96             <td width=100 align=left>FRU</td>
 97             <td width=780 align=left>{{ d['fru'] }}</td>
 98         </tr>
 99         <tr id=row1>
100             <td width=20 ></td>
101             <td width=100 align=left>Serial ID</td>
102             <td width=780 align=left>{{ d['serial_id'] }}</td>
103         </tr>
104         <tr id=row1>
105             <td width=20 ></td>
106             <td width=100 align=left>Description</td>
107             <td width=780 align=left>{{ d['description'] }}</td>
108         </tr>
109         <tr id=row1>
110             <td width=20 ></td>
111             <td width=100 align=left>Response</td>
112             <td width=780 align=left>{{ d['response'] }}</td>
113         </tr>
114         <tr id=row1>
115             <td width=20 ></td>
116             <td width=100 align=left>Impact</td>
117             <td width=780 align=left>{{ d['impact'] }}</td>
118         </tr>
119         <tr id=row1>
120             <td width=20 ></td>
121             <td width=100 align=left>Action</td>
122             <td width=780 align=left>{{ d['action'] }}</td>
123         </tr>
124     </table>
125     </tr>
126 </table>
127 </form>
128 <br>
129 {% end %}
130 </body>
131 </html>

通过表单的方法:form_info.method  form_info.action  form_info.submit

4.self.write('<META HTTP-EQUIV=REFRESH CONTENT=0;URL=/View/faultyinfo>')

--重新加载/View/faultyinfo页面

5.self.write("<script language=javascript> top.location='/';</script>")

--重新加载整个页面(缺少说明!!!)

原文地址:https://www.cnblogs.com/fendou-999/p/3821095.html