WX03--双向绑定与网络请求
day03 双向绑定、网络请求
1.数据绑定
-
基本绑定
-
双向绑定
-
wxml
<input type="text" placeholder="请输入手机号" value="{{phone}}" bindinput="bindphone"/> -
js
data: { phone:"", }, bindphone:function(e){ this.setData({ phone:e.detail.value }) },
-
2.微信API-网络请求
wx.request({
url: 'http://127.0.0.1:8000/api/login/',
data: {phone:this.data.phone, code:this.data.code},
dataType: "json",
method: "POST",
responseType: "text",
success: (result) => {
console.log(result.data)
}
})
// 在使用 wx.request 等网络请求的API时,需要遵循:
- 网络协议:https
- 后台设置
需要在微信公众平台--小程序后台中,进行服务器等域名配置
// 本地测试时:可以临时开启 开发环境不校验请求域名...选项,跳过服务器域名的校验
3.用户登录
3.1 Django-API
-
创建虚拟环境
-
安装库
- django ==2.2.2
- djangorestframework
-
项目API:auction_api
-
登录api:LoginView
# 步骤逻辑 1.获取前端传入的手机号和验证码 2.从redis缓存中,查找对应的验证码 3.将验证码进行比对,成功则签发token,失败则返回错误信息 -
验证码api:MessageView
# 步骤逻辑 1.获取前端传入的手机号 2.校验手机号格式 (正则匹配) 利用序列化类的校验数据功能来校验数据 方便封装使用,将正则匹配校验写成钩子函数,添加到字段的钩子参数中 validators=[校验函数,] 3.生成随机验证码 因短信验证码是纯数字,可采用random.randint(1000,9999)随机生成 4.采用第三方服务腾讯云,封装SDK。发送短信验证码 5.将手机号与对应验证码,存储到redis缓存中, conn.set(phone,ceode, ex=30s) 6.异步或者同步等到短信发送完毕后,返回数据给前端
-
4.腾讯云短信发送V3封装
# tx_sms_v3.py
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.sms.v20210111 import sms_client, models
from .settings import *
def send_sms(phone, random_code):
try:
# 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
cred = credential.Credential(SECRET_ID, SECRET_KEY)
client = sms_client.SmsClient(cred, "ap-guangzhou")
req = models.SendSmsRequest()
req.SmsSdkAppId = SDK_APP_ID
req.SignName = SMS_SIGN
req.TemplateId = TEMPLATE_ID
req.TemplateParamSet = [random_code]
req.PhoneNumberSet = ["+86"+phone]
resp = client.SendSms(req)
except TencentCloudSDKException as err:
print(err)
return False
return True

浙公网安备 33010602011771号