DAY 82 vue06
1 前端配置请求后端的地址
2 meida的配置
-media_url
3 前端登录功能
-判断用户名密码是否为空,message的提示
-发送axios请求(post)
4 前端存储(三个位置)
5 前端用户名的显示与不显示
6 发送短信(腾讯云)
-api和sdk
-发送短信的2.0的sdk
-封装了一层(单独做成一个模块,以后可以顺利的移到任何其他项目中)
7 校验手机号是否存在的接口
8 限制短信发送频率的频率类
1 手机号登录接口
1 只需要手机号和验证码,post
views.py
serializer.py
from django.core.cache import cache
from django.conf import settings
class UserPhoneModelSerializer(serializers.ModelSerializer):
# 需要重写code
code = serializers.CharField()
mobile = serializers.CharField(max_length=11)
class Meta:
model = models.User
fields = ['mobile', 'code']
# 写全局钩子(校验手机号和验证码是否正确,登录成功,签发token)
def validate(self, attrs):
mobile = attrs.get('mobile')
code = attrs.get('code')
# 从缓存中取出这个手机号对应的验证码
cache_code = cache.get(settings.SMS_PHONE_CACHE % mobile)
if cache_code and cache_code == code:
# 可以登录,根据手机号,查到用户,给这个用户签发token
user = models.User.objects.get(mobile=mobile)
# 签发token
payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)
self.context['token'] = token
self.context['user'] = user
return attrs
else:
raise ValidationError('验证码错误')
2 前端获取验证码,手机号登录,前端注册功能
Register.vue
<template>
<div class="register">
<div class="box">
<i class="el-icon-close" @click="close_register"></i>
<div class="content">
<div class="nav">
<span class="active">新用户注册</span>
</div>
<el-form>
<el-input
placeholder="手机号"
prefix-icon="el-icon-phone-outline"
v-model="mobile"
clearable