问题描述

在开发QQ小程序的过程中,有时候需要用到一些python后端的模型(例如语音识别、图片转文字等等)或者已经实现的python代码。这些代码直接在小程序中实现比较麻烦或者根本不可能实现,这就需要在小程序中完成对现有代码的调用。

解决方案

首先用Flask构建一个Web应用程序框架,然后在小程序中向一个事先规定的url发送请求,接着便可以调用Falsk中相应的函数,以实现所需的功能。

Flask使用

安装

在命令行中输入下列命令进行安装

pip install Flask

测试Flask安装

为了测试 Flask 安装,请在编辑器中将以下代码输入 Hello.py:

import os
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
   return 'Hello World'

if __name__ == '__main__':
   app.run(debug=False, host='127.0.0.1', port=int(os.environ.get('PORT', 8080)))

必须在项目中导入Flask模块。
Flask构造函数使用当前模块(__name __)的名称作为参数。
Flask类的route()函数是一个装饰器,它告诉应用程序哪个URL应该调用相关的函数。

app.route(rule, options)
  • rule 参数表示与该函数的URL绑定。
  • options 是要转发给基础Rule对象的参数列表。

在上面的示例中,’/ ’ URL与hello_world()函数绑定。因此,当在浏览器中打开web服务器的主页时,将呈现该函数的输出。

最后,Flask类的run()方法在本地开发服务器上运行应用程序。

代码执行后,Python shell会有下列信息提示:

* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)

在小程序中调用python后端

在小程序中可以使用下列代码调用python后端

qq.request({
    url: 'http://127.0.0.1:8080/', 
    method: "POST",
    data: {},                            //将数据传给后端

    success: function(res){
        console.log(res.data)
    }
})

在data中可以放入我们想传递给后端的数据。

运行上述代码后,由于小程序向http://127.0.0.1:8080/发送了一个请求,这时我们之前编写的Flask框架会收到这个请求,并返回Hello World。

在Flask中接收小程序中的数据

在Flask中使用request.data即可查看小程序中传递的数据,但要首先导入request库,使用下列代码进行导入。

from flask import request
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐