Python Flask 搭建微信小程序后台详解

时间:2021-05-22

前言:

近期需要开发一个打分的微信小程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序。因为是初次接触小程序,经过一番摸索和尝试,个人觉得的微信小程序与后台的交互有点像ajax,所以有ajax开发经验的同学开发小程序应该很容易上手,因为本文着重讲解后台程序的搭建,所以,微信小程序的前端开发将一笔带过,有兴趣学习小程序前端语言的同学可移步网易云课堂的一套快速入门课程《轻松玩转微信小程序》。

分三步讲解微信小程序与Python后台交互数据的全过程

小程序向后台服务器提交数据。微信小程序为数据提交开发了一个API,其实是一个js函数,详细介绍可参考官方API文档《微信小程序API文档》。下面贴下我开发的项目的数据提交js代码。

wx.request({ url: 'https://我的后台服务器网址/score', data: { acc_nbr:JSON.stringify(acc_nbr), grade1: JSON.stringify(grade1), //将数据格式转为JSON grade2: JSON.stringify(grade2), //将数据格式转为JSON grade3: JSON.stringify(grade3), //将数据格式转为JSON txt1:JSON.stringify(txt1), txt2:JSON.stringify(txt2), txt3:JSON.stringify(txt3) }, method: "POST", header: { 'content-type': 'application/x-mit() cursor.close() conn.close() if res==1: # print res res='数据提交成功' return json.dumps(res.decode('utf8')) else: print res res='数据提交失败' return json.dumps(res.decode('utf8'))if __name__ == '__main__': app.run(debug=True)

代码详解:

可以看到这是一段很基础的flask的代码。大家应该看到了@app.route('/score',methods=['POST'])这条语句,这就是flask的路由函数,没错,/score 正是小程序提交请求是url里的score路径,所以这个路由对应的函数正是处理请求的后台程序。methods=['POST'] 说明这个路由只处理POST请求。

in_acc_nbr = str(json.loads(request.values.get("acc_nbr"))),这段语句是获取请求的数据,首先request.values.get()函数是获得request请求里最初的数据。"acc_nbr"是小程序data对象里的键,因为data里的数据是json格式,所以request获取的数据也是json格式,使用flask自带的json.loads 函数获取字符数据。至此,我们已经拿到了小程序提交的数据了。

将json数据转换成字符数据后,就可以进行相关业务逻辑的处理,这里我的代码是将相关数据提交到mysql数据库里。

业务逻辑处理完毕后,需要向小程序返回消息和数据,return json.dumps(res.decode('utf8')) 这段语句是本文的核心。因为小程序接受数据需要json格式,所以我们的返回数据也需要转换成json格式,使用flask自带的json.dumps函数即可将字符类型的数据转换成json格式的数据。

后台程序返回了数据后,第三步就是小程序该怎么接收返回数据并进行相关业务逻辑处理。

小程序接收返回数据。Python-Flask向小程序返回了JSON格式的数据后,小程序的wx.requset()函数里的SUCESS回调函数用来处理返回数据。下面贴下项目中wx.requset()函数中sucess回调函数。

wx.request({ url: 'https://我的后台服务器网址/score', data: { acc_nbr:JSON.stringify(acc_nbr), grade1: JSON.stringify(grade1), //将数据格式转为JSON grade2: JSON.stringify(grade2), //将数据格式转为JSON grade3: JSON.stringify(grade3), //将数据格式转为JSON txt1:JSON.stringify(txt1), txt2:JSON.stringify(txt2), txt3:JSON.stringify(txt3) }, method: "POST", header: { 'content-type': 'application/x-www-form-urlencoded', 'chartset': 'utf-8' }, success: function (res) { console.log(res.data); wx.showToast({ title: res.data,//这里打印出登录成功 icon: 'success', duration: 1000 }); var acc_nbr = that.data.phoneNum; wx.redirectTo({ url: '../graderesult/graderesult?phoneNum=' + acc_nbr }) } })

代码详解:单独拿出sucess回调函数讲解。

success: function (res) { console.log(res.data); wx.showToast({ title: res.data,//这里打印出登录成功 icon: 'success', duration: 1000 }); var acc_nbr = that.data.phoneNum; wx.redirectTo({ url: '../graderesult/graderesult?phoneNum=' + acc_nbr }) }

res入参存储的数据,即res.data,就是第二步后台返回的数据。可以用console.log(res.data)看下返回的数据是否正确。

我的项目在拿到后台返回的数据,进行了弹窗展示返回数据wx.showToast和页面的跳转wx.redirectTo,大家可以根据自己的业务需求在sucess回调函数编写自己的业务逻辑。

结尾:

至此,微信小程序和Python后台交互数据的步骤已经讲完。正如文章开头所讲,学过ajax的同学读完会发现微信小程序与后台交互数据非常像ajax,所以,文章结尾贴出一个彩蛋,即神奇的ajax代码,出自我的另一个web项目,供大家品鉴^_^~

<script type="text/javascript"> $(function () { $('.btn').click(function () { var $result = $('#result'); var $result1=$('#result1'); var $acc_nbr = $('input[name="acc_nbr"]').val(); $.ajax({ url: '/query', data: $('form').serialize(), type: 'POST', dataType: 'json', success: function (data) { if (data.length !=0){ console.log(data.length); var str = ""; var str1="<input value='"+data[0][8]+"'class='form-control' type='hidden' name='acct_id'>" + "<input value='"+Math.ceil(data[0][7]*1.5)+"'class=\"form-control\" type=\"text\" name='credit_amount' readonly >" + " <button type=\"submit\" class=\"btn btn-primary\">确认</button>"; for (s in data) { if (data[s][4] == '后付费') { str = str + "<tr class=\"danger\">" + "<td>" + data[s][0] + "</td>" + "<td>" + data[s][1] + "</td>" + "<td>" + data[s][2] + "</td>" + "<td>" + data[s][3] + "</td>" + "<td>" + data[s][4] + "</td>" + "<td>" + data[s][5] + "</td>" + "<td>" + data[s][6] + "</td>" + "</tr>" } else { str = str + "<tr class=\"success\">" + "<td>" + data[s][0] + "</td>" + "<td>" + data[s][1] + "</td>" + "<td>" + data[s][2] + "</td>" + "<td>" + data[s][3] + "</td>" + "<td>" + data[s][4] + "</td>" + "<td>" + data[s][5] + "</td>" + "<td>" + data[s][6] + "</td>" + "</tr>" } }; $result1.html(str1); $result.html(str); } else { alert('此号码不在派单内!!'); } } } ) }); }); </script>

以上所述是小编给大家介绍的Python Flask 搭建微信小程序后台详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章