如何發(fā)送短信 使用的是云片網(wǎng)的短信服務(wù)
我們自己來(lái)寫接口
import requests
class YunPian(object):
def __init__(self,api_key):
self.api_key = api_key
self.single_send_url = 'https://sms.yunpian.com/v2/sms/single_send.json'
def send_sms(self,code,mobile):
parmas={
"apikey":self.api_key,
'mobile':mobile,
'text':'把云片網(wǎng)的模版的內(nèi)容復(fù)制過(guò)來(lái)卷员,否則不能發(fā)送'
}
response = requests.post(self.single_send_url,data=parmas)
import json
re_dict = json.loads(response.text)
return re_dict
if __name__ == '__main__':
yun_pian = YunPian("自己的api_key")
yun_pian.send_sms('2018',"電話號(hào)碼")
記得需要在 云片網(wǎng) 把自己的外網(wǎng)ip加進(jìn)去 才能發(fā)送成功
這個(gè)到是很簡(jiǎn)單 就可以 發(fā)送了
然后 就是 用戶注冊(cè) 以后 有兩種 形式 一種是跳轉(zhuǎn)到登錄頁(yè)面 讓他自己登錄
另一種就是幫他登錄 跳轉(zhuǎn)到首頁(yè)
第一種沒(méi)什么難度 來(lái)說(shuō)說(shuō)第二種
幫他登錄 就需要 name 和token 因?yàn)?我們使用的jwt 的token 驗(yàn)證
所以我們需要在后端 把token給他傳過(guò)來(lái) 讓他登錄
from rest_framework_jwt.serializers import jwt_encode_handler,jwt_payload_handler
class UserViewset(CreateModelMixin,viewsets.GenericViewSet):
"""
用戶
"""
serializer_class = UserRegSerializer
queryset = User.objects.all()
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
# self.perform_create(serializer)
user = self.perform_create(serializer)
#賦值給一個(gè)列表
re_dict = serializer.data
#獲取user用戶的 具體的不太了解
payload = jwt_payload_handler(user)
#加密
re_dict['token']= jwt_encode_handler(payload)
re_dict['name']= user.name if user.name else user.username
headers = self.get_success_headers(serializer.data)
return Response(re_dict, status=status.HTTP_201_CREATED, headers=headers)
def perform_create(self, serializer):
return serializer.save()
上面 重寫了 CreateModelMixin 的create 和 perform_create方法
在create 中 使用 jwt_payload_handler(user) 獲取到一些user中 拿來(lái) 加密的內(nèi)容
下面就是 jwt_payload_handler(user) 返回的一些東西
payload = {
'user_id': user.pk,
'username': username,
'exp': datetime.utcnow() + api_settings.JWT_EXPIRATION_DELTA
}
然后jwt_encode_handler(payload) 進(jìn)行加密 添加一個(gè) re_dict['token‘]返回給前端
perform_create 中他并沒(méi)有返回serializer 回來(lái) 他返回的是 serializer 里面的model的對(duì)象 User