>æçå¼å 们ï¼ä½ 们è½å¨ç¾è¬è¯ç¼ä¸ï¼é½è¦ä»¥ä¸ºå¤§åä¹ï¼å ä¸ºä½ ä»¬çä¿¡å¿ç»è¿è¯éªï¼å°±çå¿èãä½å¿èä¹å½æåï¼ä½¿ä½ 们æå ¨å®å¤ï¼æ¯«æ ç¼ºæ¬ ãä½ ä»¬ä¸é´è¥æç¼ºå°æºæ §çï¼åºå½æ±é£åèµä¸ä¼äººãä¹ä¸æ¥è´£äººçç¥ï¼ä¸»å°±å¿ èµç»ä»ã(JAMES 1:2-5) #ç¨tornadoåç½ç«(4) ##æ¨¡æ¿ å·²ç»åºæ¬äºè§£å端ååå端å¦ä½ä¼ éæ°æ®ï¼ä»¥åå端å¦ä½æ¥æ¶æ°æ®çè¿ç¨åæ¹æ³ä¹åãæçªç¶åç°ï¼å端页é¢åç太é¾çäºãä¿è¯è¯´âå¤è¡ççé¹ï¼å è¡çé¨éâãç¨åºååçç½ç«ï¼å¨æ´å¤æ¶åæ¯ç»âå¤è¡âççï¼ä»ä»¬å¯æ²¡æèå¿æ¥ç代ç ï¼ä»ä»¬ççå°±æ¯çé¢ï¼å æ¤ç颿¯å¦åçæ¼äº®ä¸ç¹ç¹ï¼æ¯ç´è§éè¦çã å ¶å®ï¼ä¹ä¸ä» ä» æ¯æ¼äº®çåå ï¼å 为å端页é¢ï¼è¿è¦æ¾ç¤ºä»å端读ååºæ¥çæ°æ®å¢ã æ°å¥½ï¼tornadoæä¾æ¯è¾å¥½ç¨çå端模æ¿(tornado.template)ãéè¿è¿ä¸ªæ¨¡æ¿ï¼è½å¤è®©å端ç¼åæ´æ¹ä¾¿ã ###render() render()æ¹æ³è½å¤åè¯tornadoè¯»å ¥åªä¸ªæ¨¡æ¿ï¼æå ¥å ¶ä¸ç模æ¿ä»£ç ï¼å¹¶è¿åç»æç»æµè§å¨ãæ¯å¦å¨IndexHandlerç±»ä¸get()æ¹æ³éé¢ç`self.render("index.html")`ï¼å°±æ¯è®©tornadoå°templatesç®ä¸æ¾å°å为index.htmlçæä»¶ï¼è¯»åºå®çå 容ï¼è¿åç»æµè§å¨ãè¿æ ·ç¨æ·å°±è½çå°index.htmlæè§å®ç页é¢äºãå½ç¶ï¼å¨å颿åçindex.htmlè¿ä» ä» æ¯htmlæ è®°ï¼æ²¡ææ¾ç¤ºåºæè°â模æ¿âçä½ç¨ã为æ¤ï¼å°index.htmlåindex.pyæä»¶åå¦ä¸æ¹é ã #!/usr/bin/env python # coding=utf-8 import tornado.web import methods.readdb as mrd class IndexHandler(tornado.web.RequestHandler): def get(self): usernames = mrd.select_columns(table="users",column="username") one_user = usernames[0][0] self.render("index.html", user=one_user) index.pyæä»¶ä¸ï¼åªä¿®æ¹äºget()æ¹æ³ï¼ä»æ°æ®åºä¸è¯»åç¨æ·åï¼å¹¶ä¸æåºä¸ä¸ªç¨æ·ï¼one_userï¼ï¼ç¶åéè¿`self.render("index.html", user=one_user)`å°è¿ä¸ªç¨æ·åæ¾å°index.htmlä¸ï¼å ¶ä¸`user=one_user`çä½ç¨å°±æ¯ä¼ éå¯¹è±¡å°æ¨¡æ¿ã æéè¯»è æ³¨æçæ¯ï¼å¨ä¸é¢ç代ç ä¸ï¼æä½¿ç¨äº`mrd.select_columns(table="users",column="username")`ï¼ä¹å°±æ¯è¯´å¿ é¡»è¦å¨methodsç®å½ä¸çreaddb.pyæä»¶ä¸æä¸ä¸ªå为select_columnsç彿°ã为äºä½¿è¯»è è½å¤çè§£ï¼è´´åºå·²ç»ä¿®æ¹ä¹åçreaddb.pyæä»¶ä»£ç ï¼æ¯ä¸ä¸èå¤äºå½æ°select_columnsï¼ #!/usr/bin/env python # coding=utf-8 from db import * def select_table(table, column, condition, value ): sql = "select " + column + " from " + table + " where " + condition + "='" + value + "'" cur.execute(sql) lines = cur.fetchall() return lines def select_columns(table, column ): sql = "select " + column + " from " + table cur.execute(sql) lines = cur.fetchall() return lines ä¸é¢æ¯index.htmlä¿®æ¹åç代ç ï¼
ç¨ç¨æ·å为ï¼{{user}}ç»å½
`ç¨ç¨æ·å为ï¼{{user}}ç»å½
`ï¼è¿éç¨äº`{{ }}`æ¹å¼ï¼æ¥å对åºçåéå¼å¯¼æ¥ç对象ãä¹å°±æ¯å¨é¦é¡µæå¼ä¹åï¼ç¨æ·åºå½çå°æä¸è¡æç¤ºãå¦ä¸å¾ä¸æ ·ã  å¾ä¸ç®å¤´æ¯æä¸ºäºå¼ºè°åæ¥å ä¸å»çï¼ç®å¤´ææçï¼å°±æ¯ä»æ°æ®åºä¸è¯»ååºæ¥çç¨æ·åï¼åå©äºæ¨¡æ¿ä¸çå大æ¬å·`{{ }}`æ¾ç¤ºåºæ¥ã `{{ }}`æ¬è´¨ä¸æ¯å ä½ç¬¦ãå½è¿ä¸ªhtml被æ§è¡çæ¶åï¼è¿ä¸ªä½ç½®ä¼è¢«ä¸ä¸ªå ·ä½ç对象ï¼ä¾å¦ä¸é¢å°±æ¯å符串qiwsirï¼ææ¿ä»£ãå ·ä½æ¯åªä¸ªå ·ä½å¯¹è±¡æ¿ä»£è¿ä¸ªå ä½ç¬¦ï¼å®å ¨æ¯ç±render()æ¹æ³ä¸å ³é®è¯æ¥æå®ï¼ä¹å°±æ¯render()ä¸çå ³é®è¯ä¸æ¨¡æ¿ä¸çå ä½ç¬¦å 裹ççå ³é®è¯ä¸è´ã ç¨è¿ç§æ¹å¼ï¼ä¿®æ¹ä¸ä¸ç¨æ·æ£ç¡®ç»å½ä¹åçææãè¦æ±ç¨æ·æ£ç¡®ç»å½ä¹åï¼è·³è½¬å°å¦å¤ä¸ä¸ªé¡µé¢ï¼å¹¶ä¸å¨é£ä¸ªé¡µé¢ä¸æ¾ç¤ºåºç¨æ·ç宿´ä¿¡æ¯ã å ä¿®æ¹url.pyæä»¶ï¼å¨å ¶ä¸å¢å ä¸äºå 容ã宿´ä»£ç å¦ä¸ï¼ #!/usr/bin/env python # coding=utf-8 """ the url structure of website """ import sys reload(sys) sys.setdefaultencoding("utf-8") from handlers.index import IndexHandler from handlers.user import UserHandler url = [ (r'/', IndexHandler), (r'/user', UserHandler), ] ç¶å就建ç«handlers/user.pyæä»¶ï¼å 容å¦ä¸ï¼ #!/usr/bin/env python # coding=utf-8 import tornado.web import methods.readdb as mrd class UserHandler(tornado.web.RequestHandler): def get(self): username = self.get_argument("user") user_infos = mrd.select_table(table="users",column="*",condition="username",value=username) self.render("user.html", users = user_infos) å¨get()ä¸ä½¿ç¨`self.get_argument("user")`ï¼ç®çæ¯è¦éè¿urlè·ååæ°userçå¼ãå æ¤ï¼å½ç¨æ·ç»å½åï¼å¾å°æ£ç¡®è¿åå¼ï¼é£ä¹jsåºè¯¥ç¨è¿æ ·çæ¹å¼è½½å ¥æ°ç页é¢ã 注æï¼ä¸è¿°çuser.py代ç 为äºç®åçªåºæ¬å°è¦è¯´æçï¼æ²¡æå¯¹user_infosçç»æè¿è¡å¤æãå¨å®é çç¼ç¨ä¸ï¼è¿è¦è¿è¡å¤ææè 使ç¨try...exceptã $(document).ready(function(){ $("#login").click(function(){ var user = $("#username").val(); var pwd = $("#password").val(); var pd = {"username":user, "password":pwd}; $.ajax({ type:"post", url:"/", data:pd, cache:false, success:function(data){ window.location.href = "/user?user="+data; }, error:function(){ alert("error!"); }, }); }); }); æ¥ä¸æ¥æ¯user.html模æ¿ã注æä¸é¢ç代ç ä¸ï¼user_infoså¼ç¨çå¯¹è±¡ä¸æ¯ä¸ä¸ªå符串äºï¼ä¹å°±æ¯ä¼ å ¥æ¨¡æ¿ç䏿¯ä¸ä¸ªåç¬¦ä¸²ï¼æ¯ä¸ä¸ªå ç»ã对æ¤ï¼æ¨¡æ¿è¿æ ·æ¥å¤çå®ã