• sae flask 微信公众平台开发


    index.wsgi启动服务文件

    import sae
    from evilxr import app
    application = sae.create_wsgi_app(app)
    

     evilxr.py

    # -*- coding: utf-8 -*-
    
    import time
    import MySQLdb
    import hashlib
    from flask import Flask, g, request, make_response, render_template,
                    url_for
    
    import xml.etree.ElementTree as ET
    
    from sae.const import (MYSQL_HOST, MYSQL_HOST_S,
       MYSQL_PORT, MYSQL_USER, MYSQL_PASS, MYSQL_DB
    )
    
    app = Flask(__name__)
    app.debug = True
    
    @app.before_request
    def before_request():
         g.db = MySQLdb.connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS,
                              MYSQL_DB, port=int(MYSQL_PORT))
    
    @app.teardown_request
    def teardown_request(exception):
        if hasattr(g, 'db'):
            g.db.close()
    
    @app.route('/',methods=['GET','POST'])
    def wechat_auth():
        if request.method == 'GET':
            token='weixin123'
            data = request.args
            signature = data.get('signature','')
            timestamp = data.get('timestamp','')
            nonce = data.get('nonce','')
            echostr = data.get('echostr','')
            s = [timestamp,nonce,token]
            s.sort()
            s = ''.join(s)
            if (hashlib.sha1(s).hexdigest() == signature):
                return make_response(echostr)
        else:
            rec = request.stream.read()#获得post来的数据
            xml_rec = ET.fromstring(rec)
            from_user=xml_rec.findtext(".//FromUserName")
            to_user=xml_rec.findtext(".//ToUserName")
            create_time=xml_rec.findtext(".//CreateTime")
            msg_type=xml_rec.findtext(".//MsgType")
            content = xml_rec.findtext(".//Content")
            Event=xml_rec.findtext(".//Event")
            if msg_type=="text":
                if content == "baidu":
                    reply = 'http://www.baidu.com/'
                elif content == "1":
                    c = g.db.cursor()
                    c.execute('select * from user where uid=1')
                    msgs = list(c.fetchall())
                    msgs.reverse()
                    for row in msgs:
                    	reply = str(row)
            elif msg_type=="image":
                reply="图片消息"
            elif msg_type=="voice":
                reply="语音消息"
            elif msg_type=="video":
                reply="视频消息"
            elif msg_type=="location":
                reply="地理消息"
            elif msg_type=="link":
                reply="链接消息"
            elif msg_type=="event" and Event=="subscribe":
                reply="关注消息"
            else:
                reply="未知类型"
            texttpl='''''<xml>
            <ToUserName>'''+from_user+'''</ToUserName>
            <FromUserName>'''+to_user+'''</FromUserName>
            <CreateTime>'''+create_time+'''</CreateTime>
            <MsgType><![CDATA[text]]></MsgType>
            <Content>'''+reply+'''</Content>
            </xml>'''
            return texttpl
            response = make_response(texttpl % (from_user,to_user,create_time, reply))
            response.content_type='application/xml'
            return response
    
    @app.route('/malice')
    def malice_index():
        ''' check index
        '''
        return render_template('123.html')
    
  • 相关阅读:
    复杂模拟 | 1017 模拟N个顾客M个柜台进行排队
    徒手实现lower_bound和upper_bound
    树状数组 | 1057
    动态规划 | 最长回文子串 1040
    动态规划 | 背包问题 1068
    动态规划 | 对输入进行hash处理的LIS 1045
    总结那些有默认margin,padding值的html标签
    javascript 的七种基本数据类型
    牛客网笔试题整理
    JavaScript 的数据结构与算法
  • 原文地址:https://www.cnblogs.com/evilxr/p/4117722.html
Copyright © 2020-2023  润新知