手机号获取验证码进行登录注册

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、准备工作
            • 1、创建django项目,进行mysql数据库配置,导入创建的app,并在django项目中创建utils目录,在此目录下创建config.py文件用于存储短信验证码,并创建test_celery.py文件写入异步
            • 2、访问容联云网站: 链接:[link](https://www.yuntongxun.com/)
            • 3、参考官方 Pyhon SDK文档:链接:[link](https://doc.yuntongxun.com/p/5f029ae7a80948a1006e776e)
            • 4、Token
            • 5、模型类创建
  • 二、后端接口创建
            • 1.在views中导入需要的模块
            • 2.获取验证码接口
            • 3.用户登录接口
            • 4.路由创建
  • 三.在vue中添加接口
          • 1.前端准备工作
          • 2.登录窗口
          • 3.验证码获取
          • 4.登录
  • 四.实践测试
      • 1.输入手机号码
      • 2.点击获取验证码
        • 此时后端接收的验证码
        • 手机接收的验证码
        • 点击登录
          • 此时后端提示为200,因为这个手机号码登陆过,所以是已存在直接登录
          • mysql数据库
      • 此时更换新手机号进行注册登录
        • 后端接收的验证码
          • 因为此手机号没有在容联云中添加测试号码,所以不会以短信形式发送
            • 提示201,表示以注册并登录,此时数据库
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

使用容联云获取验证码,进行用户登录+注册,获取手机验证码使用异步,使用token。


提示:以下是本篇文章正文内容,下面案例可供参考

一、准备工作

1、创建django项目,进行mysql数据库配置,导入创建的app,并在django项目中创建utils目录,在此目录下创建config.py文件用于存储短信验证码,并创建test_celery.py文件写入异步

config.py

# 消息中间人broker设置
broker_url = 'redis://:123456@127.0.0.1:6379/15' #不能写localhost
# 结果存储设置
backend_result_url = 'redis://:123456@127.0.0.1:6379/16'

broker 是代理人,它负责分发任务给 worker 去执行。我使用的是 Redis 作为 broker。没有设置 CELERY_RESULT_BACKEND,默认没有配置,此时 Django 会使用默认的数据库(也是你指定的 orm 数据库)。

test_celery.py

from celery import Celery
from django.conf import settings
import osos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'day0.settings')app = Celery('day0')app.config_from_object('utils3.config')app.autodiscover_tasks(settings.INSTALLED_APPS)

关于异步详细参考官方文档 链接:link

2、访问容联云网站: 链接:link
  1. 获取自己的accID、accToken、appID
3、参考官方 Pyhon SDK文档:链接:link
from ronglian_sms_sdk import SmsSDKaccId = '容联云通讯分配的主账号ID'
accToken = '容联云通讯分配的主账号TOKEN'
appId = '容联云通讯分配的应用ID'def send_message():sdk = SmsSDK(accId, accToken, appId)tid = '容联云通讯创建的模板ID'mobile = '手机号1,手机号2'datas = ('变量1', '变量2')resp = sdk.sendMessage(tid, mobile, datas)print(resp)

在utils中创建sms_code.py文件,写入SDK

from ronglian_sms_sdk import SmsSDK
import random
import redis
from utils.test_celery import appaccId = '填写自己的ACCOUNT SID'
accToken = '填写自己的AUTH TOKEN'
appId = '填写自己的AppID'@app.task
def send_message(mobile):sdk = SmsSDK(accId, accToken, appId)tid = '1'data = random.randint(100000, 999999)cls = redis.Redis(host='localhost', port=6379, password='123456')cls.set('sms%s' % mobile, data, ex=300)datas = (data, '5')resp = sdk.sendMessage(tid, mobile, datas)print(resp)return resp

@app.task为异步

4、Token
  1. 在utils文件夹中创建my_jwt.py文件
  2. 写入代码
import jwt
from django.conf import settingsdef generate_jwt(payload):token = jwt.encode(payload=payload, key=settings.SECRET_KEY)return token
5、模型类创建
class User(models.Model):mobile = models.CharField(max_length=11, verbose_name='手机号码')class Meta:db_table = 'day0920_user'verbose_name_plural = '手机验证码登录'def __str__(self):return self.mobile

二、后端接口创建

1.在views中导入需要的模块
from rest_framework.views import APIView
from rest_framework.response import Response
from day0920.models import User
from utils.sms_code import send_message
from utils.my_jwt import generate_jwt
import redis
2.获取验证码接口
class GetSMSCodeView(APIView):def get(self, request):mobile = request.query_params.get('mobile')send_message(mobile)return Response({'code': 200,'msg': '验证码发送成功'})
3.用户登录接口
class LoginUser(APIView):def post(self, request):mobile = request.data.get('mobile')smscode = request.data.get('smscode')if not all([mobile, smscode]):  # 校验前端传来数据的完整性return Response({'code': 400,'msg': '请输入账号或验证码'})cls = redis.Redis(host='127.0.0.1', port=6379, password='123456')redid_data = cls.get('sms%s' % mobile)  # 从redis中获取验证码if not redid_data:return Response({'code': 400,'msg': '验证码已过期'})if redid_data.decode('utf-8') != smscode:   # 将存入redis中的验证码转码与前端数据进行比较return Response({'code': 400,'msg': '验证码错误'})try:# 此时数据库中有此用户,直接登录User.objects.get(mobile=mobile)data_ = {'name': mobile}token = generate_jwt(data_)return Response({'code': 200,'msg': '登陆成功','token': token})except Exception as e:# 数据库中无此用户,进行注册登录User.objects.create(mobile=mobile)data_ = {'name': mobile}token = generate_jwt(data_)return Response({'code': 201,'msg': '登陆成功','token': token})
4.路由创建
  1. 主路由
"""day0 URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/2.2/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('day/', include('day0920.urls'))
]

2.在app中创建接口的子路由

from django.urls import path
from .views import *
urlpatterns = [path('get_sms_code/', GetSMSCodeViews.as_view()),path('login_user/', LoginUser.as_view())
]

三.在vue中添加接口

1.前端准备工作

1.创建vue2项目
2.下载axios与elment-ui
3.elment-ui官方文档link

2.登录窗口
<template><div><table align="center"><tr><td><h1>欢迎登陆</h1></td></tr><tr><td><el-input placeholder="请输入手机号" v-model="mobile"></el-input></td></tr><tr><td><el-input placeholder="请输入验证码" v-model="smscode"><el-buttonstyle="padding-right: 10px"slot="suffix"type="text"@click="getsms">获取验证码</el-button></el-input></td></tr><tr><td><el-button @click="login">登录</el-button></td></tr></table></div>
</template>

在这里插入图片描述

3.验证码获取
getsms() {this.$axios.get("/day/get_sms_code/", {params: { mobile: this.mobile },}).then((result) => {console.log(result);if (result.data.code == 200) {this.$message(result.data.msg);}}).catch((err) => {console.log(err);});}
4.登录
login() {this.$axios.post("/day/login_user/", {mobile: this.mobile,smscode: this.smscode,}).then((result) => {console.log(result);if (result.data.code == 201 || result.data.code == 200) {this.$message(result.data.msg);} else if (result.data.code == 400) {this.$message(result.data.msg);}}).catch((err) => {console.log(err);});}

四.实践测试

1.输入手机号码

在这里插入图片描述

2.点击获取验证码

在这里插入图片描述

此时后端接收的验证码

在这里插入图片描述

手机接收的验证码

在这里插入图片描述

点击登录

在这里插入图片描述

此时后端提示为200,因为这个手机号码登陆过,所以是已存在直接登录

在这里插入图片描述

mysql数据库

在这里插入图片描述

此时更换新手机号进行注册登录

在这里插入图片描述

后端接收的验证码

在这里插入图片描述

因为此手机号没有在容联云中添加测试号码,所以不会以短信形式发送

在这里插入图片描述

提示201,表示以注册并登录,此时数据库

在这里插入图片描述

总结

  1. 创建前后端项目
  2. 后端项目中写入容联云SDK、异步、Token
  3. 创建模型
  4. 编写获取验证码与登录接口
  5. 前端编写登录模板
  6. 获取手机号验证码按钮与登录按钮绑定点击事件并写入后端接口
  7. 完成测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4098.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI 曝新漏洞,一个手机号可以批量注册账号!

注册过ChatGPT API的朋友知道&#xff0c;新注册的用户&#xff0c;OpenAI免费赠送了5美元的使用额度。 一个账号5美元&#xff0c;100个账号可就是500美元啊&#xff0c;可以用很久了&#xff01; 于是&#xff0c;有人就打起了坏主意&#xff0c;能不能找到OpenAI的bug&…

啊啊啊小红书爆款标题技巧被我找到了!

我通过平日里对小红书的了解和积累&#xff0c;再加上这一阵子对小红书爆款笔记的研究&#xff0c;终于在这么多笔记当中发现了小红书爆款笔记标题的撰写规律&#xff01; 我们在撰写小红书的时候恨不得篇篇都是爆文&#xff0c;那么今天就来讲一下小红书那些爆款笔记标题的撰写…

5.3 10篇美食类小红书爆文拆解【玩赚小红书】

案例一&#xff1a;金牌保姆分享12个万能做饭小技巧 ​ 标题&#xff1a; 万能做饭小技巧这个词可以看的出这个方法都是偏向技巧类&#xff0c;对于人人都有做饭的需求来说&#xff0c;也忍不住让人想看看到底是什么内容。“金牌保姆”四个字可谓是将“万能”这2个字完美诠释&…

从1000篇热门笔记,看小红书的种草趋势

2022年的双11即将落下帷幕&#xff0c;小红书在大促前后为各大品牌的推广营销提供了丰沃的土壤&#xff0c;通过新红的[种草流量大盘]能看到&#xff0c;9月底、10月初开始&#xff0c;平台的种草笔记数量相比之前呈现增长的势头。 种草笔记&#xff1a;笔记的标题或内容中提及…

小红书爆文怎么打造?今天让我们一起来看看吧

小红书以其巨大的流量和忠实细分的受众群体&#xff0c;逐渐成为大家喜睐的软文投放平台&#xff0c;但是小红书爆文怎么打造&#xff1f;今天就为大家系统地介绍一下。 小红书爆文怎么打造&#xff1f;我们可以从封面样式、选题、标题、内容、配图几方面进行综合考量。 一、封…

小红书app引流脚本详细教程

大家好&#xff0c;我是你们的甜甜今天这个文章为大家分享一下小红薯引流脚详细教程 代码为大家分享一部分 If state Then If FindColorEx(创建角色, 0) Then Exit Function End If End If 第一步我们这里运行环境为安卓手…

【ChatGPT进阶】如何使用ChatGPT做小红书?

小红书是一个非常不错的做副业的渠道&#xff0c;因为它真的能够让你赚到钱&#xff0c;门槛不是太高&#xff0c;用户付费意识强。 如何通过小红书赚钱&#xff1f; 和品牌合作&#xff0c;也就是接广告。这需要你有一定的粉丝量和影响力&#xff0c;才能吸引品牌方的注意。 …

ChatGPT专业应用:小红书标题生成

正文共 404 字&#xff0c;阅读大约需要 2 分钟 品牌运营/小红书博主必备技巧&#xff0c;您将在2分钟后获得以下超能力&#xff1a; 自动生成小红书标题 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | Alice 编辑者 …

小红书文案怎么写才能吸引用户,品牌写文技巧

在小红书平台&#xff0c;文案是笔记非常重要的一环&#xff0c;那么文案怎么写才能吸引人呢?下面就让我们来聊一聊小红书文案写作的一些技巧&#xff0c;希望可以对大家有所帮助。 一、 标题 一个好的标题是非常重要的&#xff0c;这相当于是一篇笔记的门面&#xff0c;决定着…

小红书数据分析:如何用ChatGPT输出爆文笔记

ChatGPT的热度依旧不减&#xff0c;随着技术升级&#xff0c;越来越多更高级的玩法被发掘。今天我们就来聊聊&#xff0c;如何用ChatGPT写出小红书风格的文章。 首先&#xff0c;小红书笔记制作分为两个步骤&#xff1a; 1、找选题 2、写小红书风格的笔记 我们用例子说话&a…

【ChatGPT】由ChatGPT自己回答ChatGPT的基本原理

1. chatgpt简介 下面这段来自chatgpt的回答&#xff1a; ChatGPT是基于深度学习的自然语言处理模型&#xff0c;具体来说&#xff0c;它是一个预训练的神经网络模型&#xff0c;使用了Transformer架构和自回归语言建模技术。 训练ChatGPT的过程分为两个主要阶段&#xff1a; …

用chatGPT打造你的专属面试题库

go面试题库包含了go应聘者分享的他们在各个公司面试题&#xff0c;共分为有九大题型&#xff0c;超过六千道题目(暂无答案&#xff0c;可以使用chatGPT自动作答)&#xff0c;超过百家公司(由于敏感&#xff0c;去掉了公司信息)&#xff0c;面试题库管理界面主要有以下功能&…

盘点几道Python面试题【ChatGPT作答】

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 风吹仙袂飘飖举&#xff0c;犹似霓裳羽衣舞。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python白银交流群看到了几道Python基础题目&#xff0c…

ChatGPT的提示的一些高级知识

作为一个大型语言模型(LLM)接口&#xff0c;ChatGPT有令人印象深刻的潜力&#xff0c;但是真正能否用好取决与我们的提示&#xff08;Prompt &#xff09;&#xff0c;一个好的提示可以让ChatGPT晋升到一个更好的层次。 在这篇文章中&#xff0c;我们将介绍关于提示的一些高级…

chatGPT整理的前端面试题目(一)

1.HTML 部分 ​ 1.1HTML基础知识点 Html5 与 html4的区别&#xff1a; html5新增语义化标签&#xff0c;如<header> <nav>等 Html5新增表单控件&#xff0c;如<input type"date"> <input type"color">等 Html5新增多媒体标签&…

ChatGPT既然这么火,有没有弊端呢?

介绍 在现代社会中&#xff0c;人们越来越依赖技术来解决问题。聊天机器人是一种最新的技术趋势&#xff0c;这种技术可以为人们带来很多便利。而ChatGPT聊天机器人则是其中的一种&#xff0c;它使用了大型的语言模型GPT&#xff08;Generative Pre-trained Transformer&#…

ChatGPT爆火背后的真相:学编程已经成为必选项

这一阵最热门的话题&#xff0c;莫过于人工智能新选手——ChatGPT&#xff0c;在推出后只用了两个月就积累了1亿用户&#xff01;它的出现在科技圈掀起了一阵“惊涛骇浪”&#xff0c;有人称ChatGPT的意义&#xff0c;堪比当年蒸汽机的出现&#xff0c;它足以爆发新一轮的“工业…

吴恩达ChatGPT课爆火

点上方计算机视觉联盟获取更多干货 没想到时至今日&#xff0c;ChatGPT竟还会犯低级错误&#xff1f; 吴恩达大神最新开课就指出来了&#xff1a; ChatGPT不会反转单词&#xff01; 比如让它反转下lollipop这个词&#xff0c;输出是pilollol&#xff0c;完全混乱。 哦豁&#…

ChatGPT 爆火,社交应用如何 Get 新技能

风浪越大&#xff0c;鱼越贵。关注【融云全球互联网通信云】了解更多 现在&#xff0c;最大的浪无疑属于 ChatGPT&#xff0c;一款以对话方式进行交互的语言模型。 通过创新业务打下江山的商业传奇们&#xff0c;都怕跟丢了这波浪潮而成为“上一代人”。所以&#xff0c;我们…

什么是让ChatGPT爆火的大语言模型(LLM)

什么是让ChatGPT爆火的大语言模型(LLM) 更多精彩内容: https://www.nvidia.cn/gtc-global/?ncidref-dev-876561 文章目录 什么是让ChatGPT爆火的大语言模型(LLM)大型语言模型有什么用&#xff1f;大型语言模型如何工作&#xff1f;大型语言模型的热门应用在哪里可以找到大型语…