python搭建⼩程序后端_PythonFlask搭建⼩程序后台详解前⾔:
近期需要开发⼀个打分的⼩程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序。因为是初次接触⼩程序,经过⼀番摸索和尝试,个⼈觉得的⼩程序与后台的交互有点像ajax,所以有ajax开发经验的同学开发⼩程序应该很容易上⼿,因为本⽂着重讲解后台程序的搭建,所以,⼩程序的前端开发将⼀笔带过,有兴趣学习⼩程序前端语⾔的同学可移步⽹易云课堂的⼀套快速⼊门课程《轻松玩转⼩程序》。
分三步讲解⼩程序与Python后台交互数据的全过程
⼩程序向后台服务器提交数据。⼩程序为数据提交开发了⼀个API,其实是⼀个js函数,详细介绍可参考官⽅API⽂档《⼩程序API ⽂档》。下⾯贴下我开发的项⽬的数据提交js代码。
url: '我的后台服务器⽹址/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'
}
代码参数讲解:佐马仕
url: '我的后台服务器地址/score',url参数是数据提交的地址,有点像html⾥表单提交⾥的action,⼩程序对后台接⼊的服务器要求很⾼,需要具备已备案的能够解析的https域名,我的服务器使⽤的阿⾥云,⽹站架构使⽤的是
Nginx+supervisor+gunicorn+flask经典Python_flask 部署架构,此架构的部署学习可移步我的云笔记flask部署。
data: data参数是要提交的数据,数据需要转换成json格式,使⽤JSON的stringify函数,可以看到data的数据类型是JavaScript的对象类型,也就是俗称的键值对。
methon:是数据提交的请求⽅式,默认是post请求⽅式,后台在处理请求时会判断请求⽅式。
header:是数据的头⽂件,需要设置字符类型为utf-8,即'charset':'utf-8',防⽌传输中⽂数据时出现乱码。
st形式向url对应的服务器提交,下⾯讲解第⼆部分也是本⽂重点,即后台服务器接受到⼩程序的请求后,怎么处理并返回信息
后台服务器处理请求并返回信息。后台服务器处理请求是使⽤的Python-flask的轻量化web框架,对于想学习flask的同学可以移步flask的快速⼊门课程。下⾯贴下我开发的项⽬的后台处理部分的Python-flask代码。
# coding=utf8
import sys
defaultencoding = 'utf-8'
defaultencoding() != defaultencoding:
reload(sys)
sys.setdefaultencoding(defaultencoding)
from flask import Flask,render_template,request,json
from DB import *
app = Flask(__name__)
@ute('/')
def hello_world():
return render_template('index.html')
@ute('/score',methods=['POST'])
def score():
in_acc_nbr = str(json.loads(("acc_nbr")))
input_grade1=int(json.loads(("grade1")))利智照片
input_grade2 = int(json.loads(("grade2")))
input_grade3 = int(json.loads(("grade3")))
input_txt1=str(json.loads(("txt1")))
input_txt2=str(json.loads(("txt2")))
input_txt3=str(json.loads(("txt3")))
score_db=db('mysql数据库ip地址',3306,'数据库⽤户名','数据库密码','数据库','utf8')
conn=t_db()
cursor=conn.cursor()
sql=''' insert into grade (acc_nbr,grade1,grade2,grade3,txt1,txt2,txt3,insert_time) values (%s,%s,%s,%s,'%s','%s','%s',now()) '''%(in_acc_nbr,input_grade1,input_grade2,input_grade3,input_txt1,input_txt2,input_txt3)
wcount
connmit()
艾薇儿去世
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的代码。⼤家应该看到了 @ute('/score',methods=['POST'])这条语句,这就是flask的路由函数,没错,/score 正是⼩程序提交请求是url⾥的score路径,所以这个路由对应的函数正是处理请求的后台程序。methods=['POST'] 说明这个路由只处理POST请求。
in_acc_nbr = str(json.loads(("acc_nbr"))),这段语句是获取请求的数据,⾸先()函数是获得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回调函数。
url: '我的后台服务器⽹址/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;
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;
url: '../graderesult/graderesult?phoneNum=' + acc_nbr
})
}
res⼊参存储的数据,即res.data,就是第⼆步后台返回的数据。可以⽤console.log(res.data)看下返回的数据是否正确。
我的项⽬在拿到后台返回的数据,进⾏了弹窗展⽰返回数据wx.showToast和页⾯的跳转wx.redirectTo,⼤家可以根据⾃⼰的业务需求在sucess回调函数编写⾃⼰的业务逻辑。
结尾:
⾄此,⼩程序和Python后台交互数据的步骤已经讲完。正如⽂章开头所讲,学过ajax的同学读完会发现⼩程序与后台交互数据⾮常像ajax,所以,⽂章结尾贴出⼀个彩蛋,即神奇的ajax代码,出⾃我的另⼀个web项⽬,供⼤家品鉴^_^~
$(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="" +
"" +
" 确认";
for (s in data) {
if (data[s][4] == '后付费') {
str = str + "
+ "
七夕浪漫句子简短" + data[s][0] + ""
+ "
" + data[s][1] + ""
+ "
" + data[s][2] + ""
+ "
" + data[s][3] + ""
+ "
" + data[s][4] + ""
+ "
" + data[s][5] + ""
+ "
" + data[s][6] + ""
刘涛和胡军
+ "
"
}
else {
str = str + "
+ "