小程序服务器搭建前后端交互,微信小程序:request前后端交互 路由跳转 存储数据到本地和获取 小程序登入 授权...

一 request前后端交互

bc570f8277e22486b16a8b00b1695e10.png

12af2d943ae71413caceb8e97ba23f5d.png

d8bd7311f6400af09c6180489faec365.png

基本样式

wx.request({

url:'test.php', //仅为示例,并非真实的接口地址

data: {

x:'',

y:''},

header: {'content-type': 'application/json' //默认值

},

success(res) {

console.log(res.data)

}

})

实际示例

1.wxml文件中

9c3028a179c36d6af6d72ea6a0c4fc9f.png

2.js文件

d9a37a2d28b9bdd47846a36d9811af25.png

3.django后端如何获取

25621b59295b443df8d715ce1dbec166.png

二 路由跳转

1.通过js事件页面之间跳转

此方式需要在wxml和wxjs2个文件中同时操作

0125f8e6ad196800cee87f0cb7c6a811.png

示例

全局配置文件app.json

{"tabBar": {"list": [

{"pagePath": "index","text": "首页"},

{"pagePath": "other","text": "其他"}

]

}

}

pages局部js文件>Page>事件函数中

wx.switchTab({

url:'/index' #tabar页面路径

})

实际示例

1.

9192373dc1c9dcf1399273373994f1fe.png

2.

8eedb79d0a61e9dd977bfde336b2b0b1.png

5fbb6d0c9657a2cf0fce91dc6e49cae1.png

95e5fa28f7e87151fd42c58635d7cafd.png

示例

pages局部js文件>Page>事件函数中

1.

Page({

wx.reLaunch({

url:'test?id=1'})

})

2.

Page({

var name = "sb";

wx.reLaunch({

url: "/pages/test3/test3?name="+name

})

})

2.a标签方式跳转

此方式只需要在wxml中编写即可,作用和通过js一样

e76c4d4505a6df02cfbdbc99d3fa8dda.png

三 存储数据到本地

四 小程序登入

d94e25a6f6d82c88b4a2be902a942992.png

2.实际案例

2.1前端

cee3188492391810af72d00a1c47390b.png

代码:

//app.js

App({

onLaunch: function () {

var _this=this//登录

wx.login({

success: res=>{//发送 res.code 到后台换取 openId, sessionKey, unionId

wx.request({

url: _this.globalData.Url+'/login/',

data:{"code":res.code},

header:{"content-type":"application/json"},

method:"POST",

success:function(res){

console.log(res)

wx.setStorageSync("login_key",res.data.data.login_key)

}

})

}

})

},

globalData: {

Url:"http://127.0.0.1:8000",

userInfo: null

}

})

2.2后端

1.目录结构

0c0263b8ad88bfeb565d6a150c0d4d6b.png

2.封装配置文件

1.settings.py

AppId="..."AppSecret="..."

#开发者服务器向官方服务器请求的网址

code2Session="https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code"

2.wx_login.py#导入settings.py

from app01.wx importsettings#导入requests

importrequestsdeflogin(code):#1.向微信官方服务器请求数据,网址和拼接数据示例:

#GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

response=requests.get(settings.code2Session.format(settings.AppId,settings.AppSecret,code))#2.将json字符串反序列化为字典

data=response.json()if data.get("openid"):returndataelse:return False

3.cbv

models.py

from django.db importmodels#Create your models here.

classWxuser(models.Model):

id= models.AutoField(primary_key=True)

openid=models.CharField(max_length=255)

name= models.CharField(max_length=50)

avatar= models.CharField(max_length=200)

language= models.CharField(max_length=50)

province= models.CharField(max_length=50)

city= models.CharField(max_length=50)

country= models.CharField(max_length=50)#gender = models.CharField(max_length=50)

creat_time = models.DateTimeField(auto_now_add=True)

update_time= models.DateTimeField(auto_now=True)def __str__(self):return self.openid

views.py

from rest_framework.views importAPIViewfrom rest_framework.response importResponsefrom app01.wx importwx_loginfrom django.core.cache importcacheimporthashlib,timefrom app01 importmodelsclassLogin(APIView):defpost(self,request):#获取前端数据

param=request.dataif param.get("code"):#调用wx/wx_login.py/login函数

data=wx_login.login(param.get("code"))ifdata:#将openid和session_key自定义拼接

val=data['openid']+"&"+data["session_key"]#自定义openid的key

key=data["openid"]+str(int(time.time()))

md5=hashlib.md5()

md5.update(key.encode("utf-8"))

key=md5.hexdigest()#存入redis

cache.set(key,val)

has_user=models.Wxuser.objects.filter(openid=data['openid']).first()if nothas_user:#存入mysql

models.Wxuser.objects.create(openid=data['openid'])returnResponse({"code":200,"msg":"ok","data":{"login_key":key}

})else:return Response({"code": 200, "msg": "code无效"})else:return Response({"code":200,"msg":"缺少参数"})

五 授权

1.录音授权案例

9f9cf9b22f23c4754854a6dc20744d47.png

e785e8bcccb5a73515542339f1d73b3d.png

2.用户数据授权

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值