使用mysql服务来记录用户的反馈

经过前几篇教程的学习,相信你对于微信的操作与SAE和webpy都有了些了解,那么这次我想加一个功能,通过mysql来记录用户的反馈,如用户输入fk+内容,然后通过一个页面来显示,最终的效果如下 http://yangyanxing.sinaapp.com/ck

QQ截图20140214004740

1.老办法,先判断用户提交过来的信息类型,先得是text类型,然后判断是否以fk 开头的message,如果是则写入mysql,然后在urls里设置一下

先启用SAE的mysql应用

QQ截图20140214005244

你将不会得到具体的用户名与密码等信息,只会得到一个全局变量

QQ截图20140214005327

2.创建完以后点击“管理MySQL”,进入phpmyadmin界面,很熟悉吧

创建一个叫fk字段数为4的表,你可以一个字段一个字段的定义,将id设置为primary key,AUTO_INCREMENT(A_I),也可以执行下面的sql语句

?
1
2
3
4
5
6
7
CREATE  TABLE  fk(
     id  INT  AUTO_INCREMENT ,
     user  TEXT,
     time  TEXT,
     fk_content TEXT,
     PRIMARY  KEY  ( id )
)

 

3.执行以后,返回到应用的代码编辑界面,由于以后会多次用到mysql操作,所以我们将数据库操作写到一个模块中,新建一个model.py,写入以下代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# _*_ 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

 

下面加入以下代码

?
1
2
3
4
5
6
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文件,修改为以下内容

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 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

前端写的好的同学可以美化一下,我前端不好,所以只写了一个简单的表格实现

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$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的应用,还要考虑一些防注入的问题。以后会慢慢完善

转载于:https://www.cnblogs.com/AmilyWilly/p/5258424.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值