web框架前言

<div class="iteye-blog-content-contain" style="font-size: 14px"><p>&lt;div id="cnblogs_post_body"&gt;</p>
<p>&nbsp;&lt;p&gt;  对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;</p>
<p>&nbsp; &lt;img id="code_img_closed_db0e6ffa-633e-4730-97fb-dde796323f74" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /&gt;</p>
<p>&nbsp; &lt;img id="code_img_opened_db0e6ffa-633e-4730-97fb-dde796323f74" class="code_img_opened" style="display: none" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /&gt;&nbsp;</p>
<p>&nbsp; &lt;div id="cnblogs_code_open_db0e6ffa-633e-4730-97fb-dde796323f74" class="cnblogs_code_hide"&gt;&nbsp;</p>
<p>&nbsp; &nbsp;&lt;pre&gt;&lt;span style="color: #000000"&gt;import socket</p>
<p>&nbsp;</p>
<p>def f1(request):</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp; &nbsp; 处理用户请求,并返回相应的内容</p>
<p>&nbsp; &nbsp; :param request: 用户请求的所有信息</p>
<p>&nbsp; &nbsp; :return:</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp; &nbsp; f &lt;/span&gt;= open('index.fsw','rb'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; data &lt;/span&gt;=&lt;span style="color: #000000"&gt; f.read()</p>
<p>&nbsp; &nbsp; f.close()</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt; data</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&amp;lt;body&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;h1&amp;gt;用户登录&amp;lt;/h1&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;form&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;p&amp;gt;&amp;lt;input type=&lt;/span&gt;&amp;quot;text&amp;quot; placeholder=&amp;quot;用户名&amp;quot;&lt;span style="color: #000000"&gt; /&amp;gt;&amp;lt;/p&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;p&amp;gt;&amp;lt;input type=&lt;/span&gt;&amp;quot;password&amp;quot; placeholder=&amp;quot;密码&amp;quot;&lt;span style="color: #000000"&gt; /&amp;gt;&amp;lt;/p&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;/form&amp;gt;</p>
<p>&amp;lt;/body&amp;gt;</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp;</p>
<p>def f2(request):</p>
<p>&nbsp; &nbsp; f &lt;/span&gt;= open('aricle.tpl','rb'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; data &lt;/span&gt;=&lt;span style="color: #000000"&gt; f.read()</p>
<p>&nbsp; &nbsp; f.close()</p>
<p>&nbsp; &nbsp; print(data)</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt; data</p>
<p>&nbsp;</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&amp;lt;body&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;table border=&lt;/span&gt;&amp;quot;1&amp;quot;&lt;span style="color: #000000"&gt;&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;thead&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;用户名&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;邮箱&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/thead&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;tbody&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;1&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;root&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;[email protected]&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/tbody&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;/table&amp;gt;</p>
<p>&amp;lt;/body&amp;gt;</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp;</p>
<p>routers &lt;/span&gt;=&lt;span style="color: #000000"&gt; [</p>
<p>&nbsp; &nbsp; (&lt;/span&gt;'/xxx'&lt;span style="color: #000000"&gt;, f1),</p>
<p>&nbsp; &nbsp; (&lt;/span&gt;'/ooo'&lt;span style="color: #000000"&gt;, f2),</p>
<p>]#手动写的网址</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>def run():</p>
<p>&nbsp; &nbsp; sock &lt;/span&gt;=&lt;span style="color: #000000"&gt; socket.socket()</p>
<p>&nbsp; &nbsp; sock.bind((&lt;/span&gt;'127.0.0.1',8080&lt;span style="color: #000000"&gt;))</p>
<p>&nbsp; &nbsp; sock.listen(&lt;/span&gt;5&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&lt;span style="color: #000000"&gt; True:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; conn,addr &lt;/span&gt;=&lt;span style="color: #000000"&gt; sock.accept() # hang住</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; #print(conn)#获得的两个套接字,我去charm自己会发送请求一个&lt;/span&gt;/favicon.ico页面的报文</p>
<p>&lt;span style="color: #000000"&gt;&nbsp; &nbsp; &nbsp; &nbsp; # print(addr)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; # 有人来连接了</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; # 获取用户发送的数据</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; data &lt;/span&gt;= conn.recv(8096&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; data &lt;/span&gt;= str(data,encoding='utf-8'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; #print(data)#get报文</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; headers,bodys &lt;/span&gt;= data.split('\r\n\r\n'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; #print(&lt;/span&gt;&amp;quot;head:&amp;quot;&lt;span style="color: #000000"&gt;,headers)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; #print(&lt;/span&gt;&amp;quot;body:&amp;quot;&lt;span style="color: #000000"&gt;,bodys) body是空的</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; temp_list &lt;/span&gt;= headers.split('\r\n'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; # print(temp_list)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; method,url,protocal &lt;/span&gt;= temp_list[0].split(' '&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; # print(method)&nbsp; &nbsp;GET</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; # print(url)&nbsp; &nbsp; &nbsp; &lt;/span&gt;/ooo&nbsp; /&lt;span style="color: #000000"&gt;favicon.ico</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; # print(protocal)&nbsp; &lt;/span&gt;/HTTP/1.1&lt;span style="color: #000000"&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; conn.send(b&lt;/span&gt;&amp;quot;HTTP/1.1 200 OK\r\n\r\n&amp;quot;&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; func_name &lt;/span&gt;=&lt;span style="color: #000000"&gt; None</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt; item &lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; routers:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; item[0] ==&lt;span style="color: #000000"&gt; url:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; func_name &lt;/span&gt;= item[1&lt;span style="color: #000000"&gt;]</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; func_name:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response &lt;/span&gt;=&lt;span style="color: #000000"&gt; func_name(data)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print(data)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response &lt;/span&gt;= b&amp;quot;404&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; conn.send(response)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; conn.close()</p>
<p>&nbsp;</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; __name__ == '__main__'&lt;span style="color: #000000"&gt;:</p>
<p>&nbsp; &nbsp; run()&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp; &lt;/div&gt;&nbsp;</p>
<p>&nbsp; &lt;span class="cnblogs_code_collapse"&gt;静态网页&lt;/span&gt;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  这种静态页面不能与数据库连接交互,所以也是非常的low。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;</p>
<p>&nbsp; &lt;img id="code_img_closed_bd2d7529-2c6b-49d7-88a8-b4ab2d67e492" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /&gt;</p>
<p>&nbsp; &lt;img id="code_img_opened_bd2d7529-2c6b-49d7-88a8-b4ab2d67e492" class="code_img_opened" style="display: none" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /&gt;&nbsp;</p>
<p>&nbsp; &lt;div id="cnblogs_code_open_bd2d7529-2c6b-49d7-88a8-b4ab2d67e492" class="cnblogs_code_hide"&gt;&nbsp;</p>
<p>&nbsp; &nbsp;&lt;pre&gt;&lt;span style="color: #000000"&gt;import socket</p>
<p>&nbsp;</p>
<p>def f1(request):</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp; &nbsp; 处理用户请求,并返回相应的内容</p>
<p>&nbsp; &nbsp; :param request: 用户请求的所有信息</p>
<p>&nbsp; &nbsp; :return:</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp; &nbsp; f &lt;/span&gt;= open('index.fsw','rb'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; data &lt;/span&gt;=&lt;span style="color: #000000"&gt; f.read()</p>
<p>&nbsp; &nbsp; f.close()</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt; data</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&amp;lt;body&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;h1&amp;gt;用户登录&amp;lt;/h1&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;form&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;p&amp;gt;&amp;lt;input type=&lt;/span&gt;&amp;quot;text&amp;quot; placeholder=&amp;quot;用户名&amp;quot;&lt;span style="color: #000000"&gt; /&amp;gt;&amp;lt;/p&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;p&amp;gt;&amp;lt;input type=&lt;/span&gt;&amp;quot;password&amp;quot; placeholder=&amp;quot;密码&amp;quot;&lt;span style="color: #000000"&gt; /&amp;gt;&amp;lt;/p&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;/form&amp;gt;</p>
<p>&amp;lt;/body&amp;gt;</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>def f2(request):</p>
<p>&nbsp; &nbsp; f &lt;/span&gt;= open('aricle.tpl','r',encoding='utf-8'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; data &lt;/span&gt;=&lt;span style="color: #000000"&gt; f.read()</p>
<p>&nbsp; &nbsp; f.close()</p>
<p>&nbsp; &nbsp; import time</p>
<p>&nbsp; &nbsp; ctime &lt;/span&gt;=&lt;span style="color: #000000"&gt; time.time()</p>
<p>&nbsp; &nbsp; data &lt;/span&gt;= data.replace('@@sw@@'&lt;span style="color: #000000"&gt;,str(ctime))</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt; bytes(data,encoding='utf-8'&lt;span style="color: #000000"&gt;)</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&amp;lt;body&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;table border=&lt;/span&gt;&amp;quot;1&amp;quot;&lt;span style="color: #000000"&gt;&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;thead&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;用户名&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;邮箱&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/thead&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;tbody&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;1&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;@@sw@@&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;[email protected]&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/tbody&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;/table&amp;gt;</p>
<p>&amp;lt;/body&amp;gt;</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>def f3(request):</p>
<p>&nbsp; &nbsp; import pymysql</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; # 创建连接</p>
<p>&nbsp; &nbsp; conn &lt;/span&gt;= pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='jeff@123', db='db1'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; cursor &lt;/span&gt;= conn.cursor(cursor=&lt;span style="color: #000000"&gt;pymysql.cursors.DictCursor)</p>
<p>&nbsp; &nbsp; cursor.execute(&lt;/span&gt;&amp;quot;select id,username,password from userinfo&amp;quot;&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; user_list &lt;/span&gt;=&lt;span style="color: #000000"&gt; cursor.fetchall()</p>
<p>&nbsp; &nbsp; #print(user_list)</p>
<p>&nbsp; &nbsp; cursor.close()</p>
<p>&nbsp; &nbsp; conn.close()</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; content_list &lt;/span&gt;=&lt;span style="color: #000000"&gt; []</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt; row &lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; user_list:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; tp &lt;/span&gt;= &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;%s&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;%s&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;%s&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot; %(row['id'],row['username'],row['password'&lt;span style="color: #000000"&gt;])</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; content_list.append(tp)</p>
<p>&nbsp; &nbsp; content &lt;/span&gt;= &amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;.join(content_list)</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; f &lt;/span&gt;= open('userlist.html','r',encoding='utf-8'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; template &lt;/span&gt;=&lt;span style="color: #000000"&gt; f.read()</p>
<p>&nbsp; &nbsp; f.close()</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; # 模板渲染(模板&lt;/span&gt;+&lt;span style="color: #000000"&gt;数据)</p>
<p>&nbsp; &nbsp; data &lt;/span&gt;= template.replace('@@sdfsdffd@@'&lt;span style="color: #000000"&gt;,content)</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt; bytes(data,encoding='utf-8'&lt;span style="color: #000000"&gt;)</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>mysql&amp;gt; select * from userinfo;</p>
<p>+----+----------+----------+</p>
<p>| id | username | password |</p>
<p>+----+----------+----------+</p>
<p>|&nbsp; 1 | alex&nbsp; &nbsp; &nbsp;| 123&nbsp; &nbsp; &nbsp; |</p>
<p>+----+----------+----------+</p>
<p>&amp;lt;body&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;table border=&lt;/span&gt;&amp;quot;1&amp;quot;&lt;span style="color: #000000"&gt;&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;thead&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;用户名&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;th&amp;gt;邮箱&amp;lt;/th&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/thead&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;tbody&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@sdfsdffd@@</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/tbody&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;/table&amp;gt;</p>
<p>&amp;lt;/body&amp;gt;</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>def f4(request):</p>
<p>&nbsp; &nbsp; import pymysql</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; # 创建连接</p>
<p>&nbsp; &nbsp; conn &lt;/span&gt;= pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='jeff@123', db='db1'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; cursor &lt;/span&gt;= conn.cursor(cursor=&lt;span style="color: #000000"&gt;pymysql.cursors.DictCursor)</p>
<p>&nbsp; &nbsp; cursor.execute(&lt;/span&gt;&amp;quot;select id,username,password from userinfo&amp;quot;&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; user_list &lt;/span&gt;=&lt;span style="color: #000000"&gt; cursor.fetchall()</p>
<p>&nbsp; &nbsp; cursor.close()</p>
<p>&nbsp; &nbsp; conn.close()</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; f &lt;/span&gt;= open('hostlist.html','r',encoding='utf-8'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; data &lt;/span&gt;=&lt;span style="color: #000000"&gt; f.read()</p>
<p>&nbsp; &nbsp; f.close()</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; # 基于第三方工具实现的模板渲染</p>
<p>&nbsp; &nbsp; from jinja2 import Template</p>
<p>&nbsp; &nbsp; template &lt;/span&gt;=&lt;span style="color: #000000"&gt; Template(data)</p>
<p>&nbsp; &nbsp; data &lt;/span&gt;= template.render(xxxxx=user_list,user='sdfsdfsdf'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt; data.encode('utf-8'&lt;span style="color: #000000"&gt;)</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {% for row in xxxxx %}</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;td&amp;gt;{{row.id}}&amp;lt;/td&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;td&amp;gt;{{row.username}}&amp;lt;/td&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;td&amp;gt;{{row.password}}&amp;lt;/td&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/tr&amp;gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {% endfor %}</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &amp;lt;/tbody&amp;gt;</p>
<p>&nbsp; &nbsp; &amp;lt;/table&amp;gt;</p>
<p>&nbsp; &nbsp; {{user}}</p>
<p>&nbsp;</p>
<p>&lt;/span&gt;&amp;quot;&amp;quot;&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp;</p>
<p>routers &lt;/span&gt;=&lt;span style="color: #000000"&gt; [</p>
<p>&nbsp; &nbsp; (&lt;/span&gt;'/xxx'&lt;span style="color: #000000"&gt;, f1),</p>
<p>&nbsp; &nbsp; (&lt;/span&gt;'/ooo'&lt;span style="color: #000000"&gt;, f2),</p>
<p>&nbsp; &nbsp; (&lt;/span&gt;'/userlist.html'&lt;span style="color: #000000"&gt;, f3),</p>
<p>&nbsp; &nbsp; (&lt;/span&gt;'/host.html'&lt;span style="color: #000000"&gt;, f4),</p>
<p>]</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>def run():</p>
<p>&nbsp; &nbsp; sock &lt;/span&gt;=&lt;span style="color: #000000"&gt; socket.socket()</p>
<p>&nbsp; &nbsp; sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, &lt;/span&gt;1&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; sock.bind((&lt;/span&gt;'127.0.0.1',8080&lt;span style="color: #000000"&gt;))</p>
<p>&nbsp; &nbsp; sock.listen(&lt;/span&gt;5&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&lt;span style="color: #000000"&gt; True:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; conn,addr &lt;/span&gt;=&lt;span style="color: #000000"&gt; sock.accept() # hang住</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; # 有人来连接了</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; # 获取用户发送的数据</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; data &lt;/span&gt;= conn.recv(8096&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; data &lt;/span&gt;= str(data,encoding='utf-8'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; headers,bodys &lt;/span&gt;= data.split('\r\n\r\n'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; temp_list &lt;/span&gt;= headers.split('\r\n'&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; method,url,protocal &lt;/span&gt;= temp_list[0].split(' '&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; conn.send(b&lt;/span&gt;&amp;quot;HTTP/1.1 200 OK\r\n\r\n&amp;quot;&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; func_name &lt;/span&gt;=&lt;span style="color: #000000"&gt; None</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt; item &lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; routers:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; item[0] ==&lt;span style="color: #000000"&gt; url:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; func_name &lt;/span&gt;= item[1&lt;span style="color: #000000"&gt;]</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; func_name:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response &lt;/span&gt;=&lt;span style="color: #000000"&gt; func_name(data)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response &lt;/span&gt;= b&amp;quot;404&amp;quot;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; conn.send(response)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; conn.close()</p>
<p>&nbsp;</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; __name__ == '__main__'&lt;span style="color: #000000"&gt;:</p>
<p>&nbsp; &nbsp; run()&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp; &lt;/div&gt;&nbsp;</p>
<p>&nbsp; &lt;span class="cnblogs_code_collapse"&gt;动态页面&lt;/span&gt;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  这里要说两点,首先这里使用了jinjia2模块,所以要简单的介绍一下这个模块。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  渲染模板(使用render_template方法)&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;&nbsp;</p>
<p>&nbsp; &lt;pre&gt;@app.route(&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;/about/&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;)</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;def&lt;/span&gt;&lt;span style="color: #000000"&gt; about():</p>
<p>&nbsp; &lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; return render_template('about.html',user='username')&lt;/span&gt;</p>
<p>&nbsp; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; render_template(&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;about.html&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;,**{&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;user&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;:&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;username&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;})&lt;/pre&gt;&nbsp;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  渲染模版时有两种传递参数的方式:用 var='value' 传递一个参数;使用字典组织多个参数,并且加两个&lt;code&gt;*&lt;/code&gt;号转换成关键字参数传入。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  在jinja2模板中:&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;&lt;code&gt;  {{ ... }}&lt;/code&gt;:装载一个变量,模板渲染的时候,会使用传进来的同名参数这个变量代表的值替换掉。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;&lt;code&gt;  {% ... %}&lt;/code&gt;:装载一个控制语句。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;&lt;code&gt;  {# ... #}&lt;/code&gt;:装载一个注释,模板渲染的时候会忽视这中间的值。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  变量:&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  设置全局变量:{% set name='xx' %},之后就可以使用此变量了。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  设置局部变量:&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;&nbsp;</p>
<p>&nbsp; &lt;pre&gt;{% with foo = 42 %&lt;span style="color: #000000"&gt;}</p>
<p>{{ foo }}</p>
<p>{&lt;/span&gt;% endwith %}&lt;/pre&gt;&nbsp;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  这里的foo变量只能在with标签中使用。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;</p>
<p>&nbsp; &lt;img id="code_img_closed_019b901b-fa90-4f17-abf9-0605a1f8bd06" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /&gt;</p>
<p>&nbsp; &lt;img id="code_img_opened_019b901b-fa90-4f17-abf9-0605a1f8bd06" class="code_img_opened" style="display: none" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /&gt;&nbsp;</p>
<p>&nbsp; &lt;div id="cnblogs_code_open_019b901b-fa90-4f17-abf9-0605a1f8bd06" class="cnblogs_code_hide"&gt;&nbsp;</p>
<p>&nbsp; &nbsp;&lt;pre&gt;{% &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; kenny.sick %&lt;span style="color: #000000"&gt;}</p>
<p>Kenny &lt;/span&gt;&lt;span style="color: #0000ff"&gt;is&lt;/span&gt;&lt;span style="color: #000000"&gt; sick.</p>
<p>{&lt;/span&gt;% &lt;span style="color: #0000ff"&gt;elif&lt;/span&gt; kenny.dead %&lt;span style="color: #000000"&gt;}</p>
<p>You killed Kenny! You bastard!!!</p>
<p>{&lt;/span&gt;% &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; %&lt;span style="color: #000000"&gt;}</p>
<p>Kenny looks okay &lt;/span&gt;---&lt;span style="color: #000000"&gt; so far</p>
<p>{&lt;/span&gt;% endif %}&lt;/pre&gt;&nbsp;</p>
<p>&nbsp; &lt;/div&gt;&nbsp;</p>
<p>&nbsp; &lt;span class="cnblogs_code_collapse"&gt;if语句&lt;/span&gt;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;</p>
<p>&nbsp; &lt;img id="code_img_closed_42db93fd-cc3e-4cd5-9801-047d02adb69e" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /&gt;</p>
<p>&nbsp; &lt;img id="code_img_opened_42db93fd-cc3e-4cd5-9801-047d02adb69e" class="code_img_opened" style="display: none" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /&gt;&nbsp;</p>
<p>&nbsp; &lt;div id="cnblogs_code_open_42db93fd-cc3e-4cd5-9801-047d02adb69e" class="cnblogs_code_hide"&gt;&nbsp;</p>
<p>&nbsp; &nbsp;&lt;pre&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;一般循环&lt;/span&gt;</p>
<p>&amp;lt;ul&amp;gt;&lt;span style="color: #000000"&gt;</p>
<p>{&lt;/span&gt;% &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; user &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; users %&lt;span style="color: #000000"&gt;}</p>
<p>&lt;/span&gt;&amp;lt;li&amp;gt;{{ user.username|e }}&amp;lt;/li&amp;gt;&lt;span style="color: #000000"&gt;</p>
<p>{&lt;/span&gt;% endfor %&lt;span style="color: #000000"&gt;}</p>
<p>&lt;/span&gt;&amp;lt;/ul&amp;gt;</p>
<p>&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;遍历字典&lt;/span&gt;</p>
<p>{% &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; key, value &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; my_dict.iteritems() %&lt;span style="color: #000000"&gt;}</p>
<p>&lt;/span&gt;&amp;lt;dt&amp;gt;{{ key|e }}&amp;lt;/dt&amp;gt;</p>
<p>&amp;lt;dd&amp;gt;{{ value|e }}&amp;lt;/dd&amp;gt;&lt;span style="color: #000000"&gt;</p>
<p>{&lt;/span&gt;% endfor %}&lt;/pre&gt;&nbsp;</p>
<p>&nbsp; &lt;/div&gt;&nbsp;</p>
<p>&nbsp; &lt;span class="cnblogs_code_collapse"&gt;for循环&lt;/span&gt;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  jinja2模块最重要的部分是宏,宏相当于一个搭建好的页面一部分,可以被引入,可以往宏传递参数。可以将一些经常用到的代码片段放到宏中,然后把一些不固定的值抽取出来当成一个变量,在使用宏时传递参数,从而将宏渲染成为页面的一部分。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  更多关于此模块的操作,可以查看博客https://www.cnblogs.com/ygj0930/p/7170621.html。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  要说的第二点就是这种方法还是太low了。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;</p>
<p>&nbsp; &lt;img id="code_img_closed_0debd8bd-9a49-4b97-bb0e-8be8ae2f2f9b" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /&gt;</p>
<p>&nbsp; &lt;img id="code_img_opened_0debd8bd-9a49-4b97-bb0e-8be8ae2f2f9b" class="code_img_opened" style="display: none" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /&gt;&nbsp;</p>
<p>&nbsp; &lt;div id="cnblogs_code_open_0debd8bd-9a49-4b97-bb0e-8be8ae2f2f9b" class="cnblogs_code_hide"&gt;&nbsp;</p>
<p>&nbsp; &nbsp;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt; socket</p>
<p>&nbsp;</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;def&lt;/span&gt;&lt;span style="color: #000000"&gt; handle_request(client):</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; buf &lt;/span&gt;= client.recv(1024&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; client.send(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;HTTP/1.1 200 OK\r\n\r\n&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;.encode(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;utf8&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;))</p>
<p>&nbsp; &nbsp; client.send(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;lt;h1 style='color:red'&amp;gt;Hello, yuan&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;.encode(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;utf8&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;))</p>
<p>&nbsp;</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;def&lt;/span&gt;&lt;span style="color: #000000"&gt; main():</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; sock &lt;/span&gt;=&lt;span style="color: #000000"&gt; socket.socket(socket.AF_INET, socket.SOCK_STREAM)</p>
<p>&nbsp; &nbsp; sock.bind((&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;localhost&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;,8001&lt;span style="color: #000000"&gt;))</p>
<p>&nbsp; &nbsp; sock.listen(&lt;/span&gt;5&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&lt;span style="color: #000000"&gt; True:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; connection, address &lt;/span&gt;=&lt;span style="color: #000000"&gt; sock.accept()</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; handle_request(connection)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; connection.close()</p>
<p>&nbsp;</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; &lt;span style="color: #800080"&gt;__name__&lt;/span&gt; == &lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;__main__&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;:</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; main()&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp; &lt;/div&gt;&nbsp;</p>
<p>&nbsp; &lt;span class="cnblogs_code_collapse"&gt;最low的socket服务端&lt;/span&gt;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务。这个接口就是WSGI:Web Server Gateway Interface。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;</p>
<p>&nbsp; &lt;img id="code_img_closed_1fb9732c-1f6e-4572-96b7-6659ed9df9dd" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /&gt;</p>
<p>&nbsp; &lt;img id="code_img_opened_1fb9732c-1f6e-4572-96b7-6659ed9df9dd" class="code_img_opened" style="display: none" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /&gt;&nbsp;</p>
<p>&nbsp; &lt;div id="cnblogs_code_open_1fb9732c-1f6e-4572-96b7-6659ed9df9dd" class="cnblogs_code_hide"&gt;&nbsp;</p>
<p>&nbsp; &nbsp;&lt;pre&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; from wsgiref.simple_server import make_server&lt;/span&gt;&lt;span style="color: #008000"&gt;</p>
<p>#</p>
<p>#</p>
<p>#&lt;/span&gt;&lt;span style="color: #008000"&gt; def application(environ, start_response):&lt;/span&gt;&lt;span style="color: #008000"&gt;</p>
<p>#&lt;/span&gt;&lt;span style="color: #008000"&gt;&nbsp; &nbsp; &nbsp;start_response('200 OK', [('Content-Type', 'text/html')])&lt;/span&gt;&lt;span style="color: #008000"&gt;</p>
<p>#&lt;/span&gt;&lt;span style="color: #008000"&gt;&nbsp; &nbsp; &nbsp;return [b'&amp;lt;h1&amp;gt;Hello, web!&amp;lt;/h1&amp;gt;&amp;lt;h2&amp;gt;Hello, py!&amp;lt;/h2&amp;gt;']&lt;/span&gt;&lt;span style="color: #008000"&gt;</p>
<p>#</p>
<p>#</p>
<p>#&lt;/span&gt;&lt;span style="color: #008000"&gt; httpd = make_server('127.0.0.2', 8080, application)#(ip,pork,func)&lt;/span&gt;&lt;span style="color: #008000"&gt;</p>
<p>#</p>
<p>#&lt;/span&gt;&lt;span style="color: #008000"&gt; print('Serving HTTP on port 8080...')&lt;/span&gt;&lt;span style="color: #008000"&gt;</p>
<p>#&lt;/span&gt;&lt;span style="color: #008000"&gt; # 开始监听HTTP请求:&lt;/span&gt;&lt;span style="color: #008000"&gt;</p>
<p>#&lt;/span&gt;&lt;span style="color: #008000"&gt; httpd.serve_forever()&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp; &lt;/div&gt;&nbsp;</p>
<p>&nbsp; &lt;span class="cnblogs_code_collapse"&gt;wsgiref模块&lt;/span&gt;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;h1&gt;django入门&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/Jeffding/p/7836702.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/h1&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  django是一个基于python的高级web开发框架,因为他的高度集成,将会在今后的web开发里给予我们很大的帮助。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  首先创建一个django工程(加不加.py都可以):&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;&nbsp;</p>
<p>&nbsp; &lt;pre&gt;django-&lt;span style="color: #000000"&gt;admin.py startproject project_name</p>
<p>&lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;django-admin.py startproject myblog&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  工程下面有几个核心测文件:&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  manage.py&amp;nbsp; &amp;nbsp;Django项目里面的管理工具,通过它可以调用django&amp;nbsp;shell和数据库等。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  settings.py&amp;nbsp; &amp;nbsp; 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  urls.py&amp;nbsp; &amp;nbsp; 负责把URL模式映射到应用程序,路由(就是url与函数的对应关系)。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  wsgi.py&amp;nbsp; &amp;nbsp; 调用python内置的wsgiref模块,web服务网关接口。他定义django用什么socket实现,默认就是wsgiref模块。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  注:除了命令的方式pycharm也可以进行django工程的搭建。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  HttpResponse模块&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;&nbsp;</p>
<p>&nbsp; &lt;pre&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt; django.conf.urls &lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt; url</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt; django.shortcuts &lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt; HttpResponse</p>
<p>&nbsp;</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;def&lt;/span&gt; index(request):&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;request用户请求相关的所有信息&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; HttpResponse(&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;whatever&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;)</p>
<p>urlpatterns &lt;/span&gt;=&lt;span style="color: #000000"&gt; [</p>
<p>&nbsp; &nbsp; url(r&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;^index/&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;, index),</p>
<p>]&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  启动django自带的服务器,&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;&nbsp;</p>
<p>&nbsp; &lt;pre&gt;python manage.py runserver 8080&lt;/pre&gt;&nbsp;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  在浏览器访问127.0.0.1:8080/index即可查看到django渲染后的网页。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  render模块&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;&nbsp;</p>
<p>&nbsp; &lt;pre&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt; django.conf.urls &lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt; url</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt; django.shortcuts &lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt; render</p>
<p>&nbsp;</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;def&lt;/span&gt; index(request):&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;request用户请求相关的所有信息&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; render(request,&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;a.html&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;)&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;默认要加request参数&lt;/span&gt;</p>
<p>urlpatterns =&lt;span style="color: #000000"&gt; [</p>
<p>&nbsp; &nbsp; url(r&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;^index/&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;, index),</p>
<p>]&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  接下来在浏览器访问127.0.0.1:8080/index即可查看到django渲染后的网页(服务器在改变了代码的情况下会自动重启)。还有,访问的前提是在templates目录下有一个a.html的文件。那么django是如何找到这个路径的呢,因为在settings.py下有一个TEMPLATES列表,其中'DIRS': [os.path.join(BASE_DIR, 'templates')]指明了render需要从这个目录下拿到。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  静态文件的配置&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  在工程文件夹下创建一个static文件夹里面存放静态文件,并将路径写入settings.py下。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;&nbsp;</p>
<p>&nbsp; &lt;pre&gt;STATIC_URL = &lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;/static/&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;</p>
<p>STATICFILES_DIRS&lt;/span&gt;=(os.path.join(BASE_DIR,&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;static&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;),)&lt;/pre&gt;&nbsp;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  然后在导入文件时一律使用/static引入。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  request相关&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  request.method获得当前请求的方法。request.GET与request.POST可以取到用户提交的数据。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;&nbsp;</p>
<p>&nbsp; &lt;pre&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt; django.conf.urls &lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt; url</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt; django.shortcuts &lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&lt;span style="color: #000000"&gt; render,redirect</p>
<p>&nbsp;</p>
<p>&lt;/span&gt;&lt;span style="color: #0000ff"&gt;def&lt;/span&gt; index(request):&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;request用户请求相关的所有信息&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; request.method ==&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;GET&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;:&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;浏览器默认传get,区分返回来的信息&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; render(request,&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;a.html&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;)</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; u&lt;/span&gt;=request.POST.get(&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;user&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;)&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;取出post方式传回来的字典的值&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; p=request.POST.get(&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;pwd&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;)&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt;get取不到会转化为none&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; u==&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;jeff&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt; &lt;span style="color: #0000ff"&gt;and&lt;/span&gt; p==&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;123&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt; redirect(&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;http://www.baidu.com&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;)#当然也可以重定向到自己的目录</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt; render(request, &lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;a.html&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;)</p>
<p>urlpatterns &lt;/span&gt;=&lt;span style="color: #000000"&gt; [</p>
<p>&nbsp; &nbsp; url(r&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;^index/&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;, index),</p>
<p>]&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  a.html中的修改:&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;&nbsp;</p>
<p>&nbsp; &lt;pre&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: #ff00ff"&gt;DOCTYPE html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;html &lt;/span&gt;&lt;span style="color: #ff0000"&gt;lang&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;en&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;meta &lt;/span&gt;&lt;span style="color: #ff0000"&gt;charset&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;link &lt;/span&gt;&lt;span style="color: #ff0000"&gt;rel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; href&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;/static/as.css&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Title&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;用户登录&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;form &lt;/span&gt;&lt;span style="color: #ff0000"&gt;method&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;post&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; action&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;/index/&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;{# 发送以post方式发到index下 #}</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;text&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;user&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;pwd&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;submit&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;login&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;form&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  这样用户访问127.0.0.1:8080/index会使用get方法返回a.html页面,输入用户名和密码提交会用post方法返回给index页面经判断是重定向还是重新输入。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  django的渲染模板&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  django基本的html的模板与jinja2很相似,我们可以在form表单里加入一个{{ msg }}的模板,然后在render里添加一个msg:value用于自动传入。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  django的模板取序列的值也是简单粗暴,比如取列表就是{{&amp;nbsp; list.index }}例如{{ s.0 }}{{ s.1 }},字典就是{{ dict.key }}例如{{row.id}}{{ row.name }}。&lt;/p&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;</p>
<p>&nbsp; &lt;img id="code_img_closed_b92df400-e21d-4365-8490-c556b7675d06" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /&gt;</p>
<p>&nbsp; &lt;img id="code_img_opened_b92df400-e21d-4365-8490-c556b7675d06" class="code_img_opened" style="display: none" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /&gt;&nbsp;</p>
<p>&nbsp; &lt;div id="cnblogs_code_open_b92df400-e21d-4365-8490-c556b7675d06" class="cnblogs_code_hide"&gt;&nbsp;</p>
<p>&nbsp; &nbsp;&lt;pre&gt;&lt;span style="color: #000000"&gt;from django.conf.urls import url</p>
<p>from django.contrib import admin</p>
<p>from django.shortcuts import HttpResponse,render,redirect</p>
<p>&nbsp;</p>
<p>def index(request):#request用户请求相关的所有信息</p>
<p>&nbsp; &nbsp; if request.method =='GET':</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; return render(request,&amp;quot;a.html&amp;quot;)</p>
<p>&nbsp; &nbsp; else:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; u=request.POST.get('user')</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; p=request.POST.get('pwd')</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; print(u)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; print(p)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; if u=='jeff' and p=='123':</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return render(request, &amp;quot;b.html&amp;quot;,{'user':[{'id':1,'name':'jeff','age':0},</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{'id': 2, 'name': 'frank', 'age': 1},</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{'id': 3, 'name': 'xixi', 'age': 2}]})</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; else:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return render(request, &amp;quot;a.html&amp;quot;)</p>
<p>urlpatterns = [</p>
<p>&nbsp; &nbsp; url(r'^admin/', admin.site.urls),</p>
<p>&nbsp; &nbsp; url(r'^index/', index),</p>
<p>]&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp; &lt;/div&gt;&nbsp;</p>
<p>&nbsp; &lt;span class="cnblogs_code_collapse"&gt;urls.py配置&lt;/span&gt;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;</p>
<p>&nbsp; &lt;img id="code_img_closed_554ff84c-1803-4549-a429-a6a5e23f7498" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /&gt;</p>
<p>&nbsp; &lt;img id="code_img_opened_554ff84c-1803-4549-a429-a6a5e23f7498" class="code_img_opened" style="display: none" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /&gt;&nbsp;</p>
<p>&nbsp; &lt;div id="cnblogs_code_open_554ff84c-1803-4549-a429-a6a5e23f7498" class="cnblogs_code_hide"&gt;&nbsp;</p>
<p>&nbsp; &nbsp;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: #ff00ff"&gt;DOCTYPE html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;html &lt;/span&gt;&lt;span style="color: #ff0000"&gt;lang&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;en&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;meta &lt;/span&gt;&lt;span style="color: #ff0000"&gt;charset&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;link &lt;/span&gt;&lt;span style="color: #ff0000"&gt;rel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; href&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;/static/as.css&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Title&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;用户登录&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;form &lt;/span&gt;&lt;span style="color: #ff0000"&gt;method&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;post&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; action&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;/index/&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;{# 发送以post方式发到index下 #}</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;text&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;user&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;pwd&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;submit&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;login&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;form&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp; &lt;/div&gt;&nbsp;</p>
<p>&nbsp; &lt;span class="cnblogs_code_collapse"&gt;a.html&lt;/span&gt;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;div class="cnblogs_code"&gt;</p>
<p>&nbsp; &lt;img id="code_img_closed_b1de96d5-3838-43b4-aa78-bfba77efee0f" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /&gt;</p>
<p>&nbsp; &lt;img id="code_img_opened_b1de96d5-3838-43b4-aa78-bfba77efee0f" class="code_img_opened" style="display: none" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /&gt;&nbsp;</p>
<p>&nbsp; &lt;div id="cnblogs_code_open_b1de96d5-3838-43b4-aa78-bfba77efee0f" class="cnblogs_code_hide"&gt;&nbsp;</p>
<p>&nbsp; &nbsp;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: #ff00ff"&gt;DOCTYPE html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;html &lt;/span&gt;&lt;span style="color: #ff0000"&gt;lang&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;en&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;meta &lt;/span&gt;&lt;span style="color: #ff0000"&gt;charset&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Title&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;table &lt;/span&gt;&lt;span style="color: #ff0000"&gt;border&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; {% for item in user %}</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;{{ item.id }}&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;{{ item.name }}&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;{{ item.age }}&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;a &lt;/span&gt;&lt;span style="color: #ff0000"&gt;href&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;/del/?nid=={{ item.id }}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;a&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;{# 跳转到专门的del页面 #}</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; {% endfor %}{#循环结束 #}</p>
<p>&nbsp; &nbsp; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;</p>
<p>&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&nbsp;</p>
<p>&nbsp; &lt;/div&gt;&nbsp;</p>
<p>&nbsp; &lt;span class="cnblogs_code_collapse"&gt;b.html&lt;/span&gt;</p>
<p>&nbsp;&lt;/div&gt;&nbsp;</p>
<p>&nbsp;&lt;p&gt;  这里render传入的字典可以使用pymsql导入,这样就与数据库紧密的连接到一起了。&lt;/p&gt;</p>
<p>&lt;/div&gt;</p></div>

猜你喜欢

转载自sunmon.iteye.com/blog/2405641