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

2020-08-01T16:31:23
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

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

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

先启用SAE的mysql应用

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

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)

        <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一步一步搭建微信公众平台(四)----将小黄鸡引入微信自动回复

扫一扫关注公众号添加购物返利助手,领红包
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »
因本文不是用Markdown格式的编辑器书写的,转换的页面可能不符合MIP标准。