通過前幾篇教程的學習,相信你對於微信的操做與SAE和webpy都有了些瞭解,那麼此次我想加一個功能,經過mysql來記錄用戶的反饋,如用戶輸入fk+內容,而後經過一個頁面來顯示,最終的效果以下 http://yangyanxing.sinaapp.com/ckphp
1.老辦法,先判斷用戶提交過來的信息類型,先得是text類型,而後判斷是否以fk 開頭的message,若是是則寫入mysql,而後在urls裏設置一下html
先啓用SAE的mysql應用前端
你將不會獲得具體的用戶名與密碼等信息,只會獲得一個全局變量python
2.建立完之後點擊「管理MySQL」,進入phpmyadmin界面,很熟悉吧mysql
建立一個叫fk字段數爲4的表,你能夠一個字段一個字段的定義,將id設置爲primary key,AUTO_INCREMENT(A_I),也能夠執行下面的sql語句web
CREATE TABLE fk( id INT AUTO_INCREMENT , user TEXT, time TEXT, fk_content TEXT, PRIMARY KEY ( id ) )
3.執行之後,返回到應用的代碼編輯界面,因爲之後會屢次用到mysql操做,因此咱們將數據庫操做寫到一個模塊中,新建一個model.py,寫入如下代碼sql
# _*_ coding:utf-8 _*_ import web import web.db import sae.const db = web.database( dbn='mysql', host=sae.const.MYSQL_HOST, port=int(sae.const.MYSQL_PORT), user=sae.const.MYSQL_USER, passwd=sae.const.MYSQL_PASS, db=sae.const.MYSQL_DB ) def addfk(username, fktime, fkcontent): return db.insert('fk', user=username, time=fktime, fk_content=fkcontent) def get_fkcontent(): return db.select('fk', order='id')
4.打開weixinInterface.py,編輯一下,記得在前面import model數據庫
在微信
if mstype == 'text': content=xml.find("Content").text
下面加入如下代碼app
if mstype == 'text': content=xml.find("Content").text if content.startswith('fk'): fktime = time.strftime('%Y-%m-%d %H:%M',time.localtime()) model.addfk(fromUser,fktime,content[3:].encode('utf-8')) return self.render.reply_text(fromUser,toUser,int(time.time()),u'感謝您的反饋')
因爲mysql默認的編碼是utf-8,因此這裏也將內容進行utf-8轉碼
5.在urls裏添加/ck的定義
打開index.wsgi文件,修改成如下內容
# coding: UTF-8 import os import sae import web import model from weixinInterface import WeixinInterface urls = ( '/', 'Hello', '/weixin','WeixinInterface', '/ck','feedback', ) app_root = os.path.dirname(__file__) templates_root = os.path.join(app_root, 'templates') render = web.template.render(templates_root) class Hello: def GET(self): #print "你好" return render.hello("你好") class feedback: def GET(self): fkcon = model.get_fkcontent() return render.checkfk(fkcon) app = web.application(urls, globals()).wsgifunc() application = sae.create_wsgi_app(app)
6.接下來咱們來寫checkfk的渲染文件
在templates下面新建一個checkfk.html
前端寫的好的同窗能夠美化一下,我前端很差,因此只寫了一個簡單的表格實現
$def with(fkcontent) <table border="1" align = center> <tr> <th>序號</th> <th>時間</th> <th>反饋內容</th> </tr> $for item in fkcontent: <tr> <td id="tdstyle">$item.id</td> <td id="tdstyle">$item.time</td> <td id="tdstyle">$item.fk_content</td> </tr> </table>
這裏牽扯到webpy的模板實現,裏面能夠寫python代碼,可是要以$開頭,具體的能夠google獲得更多的學習
好了,都寫好後保存一下吧,在手機上用微信給你的公衆帳號反饋點內容,以fk(空格)內容發送,而後打開應用
http://yangyanxing.sinaapp.com/ck
7.遺留問題,這裏的內容沒有進行過濾,能夠寫點過濾,如空內容沒法提交併返回一個友好的提示,牽扯到mysql的應用,還要考慮一些防注入的問題。之後會慢慢完善
 
回顧以前的文章
使用python一步一步搭建微信公衆平臺(一)----基本的驗證與鸚鵡學舌功能
使用python一步一步搭建微信公衆平臺(二)----搭建一箇中英互譯的翻譯工具