微信调用mysql_使用python一步一步搭建微信公众平台(五)----使用mysql服务来记录用户的反馈...

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

b8e2aca9e8ec9adad3a32515833059ca.png

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

先启用SAE的mysql应用

84b86dc4223a9dc887de3cf55dfda6cf.png

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

a84e7b6ce4ea948f10969b4f57dc664d.png

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

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

CREATE TABLE fk(

id INT AUTO_INCREMENT ,

user TEXT,

time TEXT,

fk_content TEXT,

PRIMARY KEY ( id )

)

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

# _*_ 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

下面加入以下代码

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)

序号时间反馈内容

$for item in fkcontent:

$item.id$item.time$item.fk_content

这里牵扯到webpy的模板实现,里面可以写python代码,但是要以$开头,具体的可以google得到更多的学习

好了,都写好后保存一下吧,在手机上用微信给你的公众账号反馈点内容,以fk(空格)内容发送,然后打开应用

7.遗留问题,这里的内容没有进行过滤,可以写点过滤,如空内容无法提交并返回一个友好的提示,牵扯到mysql的应用,还要考虑一些防注入的问题。以后会慢慢完善

回顾之前的文章

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值