zoukankan      html  css  js  c++  java
  • 使用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的应用,还要考虑一些防注入的问题。以后会慢慢完善

  • 相关阅读:
    [九度][何海涛] 顺时针打印矩阵
    [何海涛] 求二元查找树的镜像
    [九度][何海涛] 二叉树中和为某一值的路径
    [面试] 水杯题实现
    [九度][何海涛] 最小的K个数
    [九度][何海涛] 字符串的排序
    如何扩展Orchard
    IoC容器Autofac(3) 理解Autofac原理,我实现的部分Autofac功能(附源码)
    使用PrivateObject帮助单元测试
    Nuget如何自动下载依赖DLL引用
  • 原文地址:https://www.cnblogs.com/AmilyWilly/p/5258424.html
Copyright © 2011-2022 走看看