使用python一步一步搭建微信公衆平臺(五)----使用mysql服務來記錄用戶的反饋

通過前幾篇教程的學習,相信你對於微信的操做與SAE和webpy都有了些瞭解,那麼此次我想加一個功能,經過mysql來記錄用戶的反饋,如用戶輸入fk+內容,而後經過一個頁面來顯示,最終的效果以下 http://yangyanxing.sinaapp.com/ckphp

QQ截圖20140214004740

1.老辦法,先判斷用戶提交過來的信息類型,先得是text類型,而後判斷是否以fk 開頭的message,若是是則寫入mysql,而後在urls裏設置一下html

先啓用SAE的mysql應用前端

QQ截圖20140214005244

你將不會獲得具體的用戶名與密碼等信息,只會獲得一個全局變量python

QQ截圖20140214005327

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的應用,還要考慮一些防注入的問題。之後會慢慢完善

&#160;

回顧以前的文章

使用python一步一步搭建微信公衆平臺(一)----基本的驗證與鸚鵡學舌功能

使用python一步一步搭建微信公衆平臺(二)----搭建一箇中英互譯的翻譯工具

使用python一步一步搭建微信公衆平臺(三)----添加用戶關注後的歡迎信息與聽音樂功能

使用python一步一步搭建微信公衆平臺(四)----將小黃雞引入微信自動回覆

相關文章
相關標籤/搜索