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的应用,还要考虑一些防注入的问题。以后会慢慢完善

  • 相关阅读:
    SVN服务器搭建(一)
    排序算法二:冒泡排序
    【LeetCode】136. Single Number
    【LeetCode】217. Contains Duplicate
    【LeetCode】189. Rotate Array
    【LeetCode】122. Best Time to Buy and Sell Stock II
    【LeetCode】26. Remove Duplicates from Sorted Array
    【LeetCode】20. Valid Parentheses
    【LeetCode】680. Valid Palindrome II
    【LeetCode】345. Reverse Vowels of a String
  • 原文地址:https://www.cnblogs.com/AmilyWilly/p/5258424.html
Copyright © 2011-2022 走看看