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
posted @ 2022-04-19 23:09  Edmond辉仔  阅读(60)  评论(0)    收藏  举报