用django实现手机短信验证码的代码
时间: 2024-01-01 09:06:11 浏览: 77
django项目中使用手机号登录的实例代码
好的,以下是用 Django 实现手机短信验证码的代码,供您参考:
1.首先在 settings.py 文件中配置短信服务商的 API_KEY、API_SECRET、签名等信息,例如:
```
SMS_API_KEY = 'your sms api key'
SMS_API_SECRET = 'your sms api secret'
SMS_SIGN = 'your sms sign'
```
2.在 views.py 文件中定义生成验证码和发送短信的函数,示例如下:
```
import random
import requests
from django.http import JsonResponse
# 生成指定长度的随机数字验证码
def generate_code(length=6):
return ''.join([str(random.randint(0, 9)) for _ in range(length)])
# 发送短信验证码
def send_sms(phone, code):
url = 'https://api.smsbao.com/sms'
data = {
'u': SMS_API_KEY,
'p': SMS_API_SECRET,
'm': phone,
'c': f'【{SMS_SIGN}】您的验证码是{code}。如非本人操作,请忽略本短信。'
}
response = requests.post(url, data=data)
return response.text == '0'
# 生成验证码并发送短信
def generate_and_send_code(request):
phone = request.GET.get('phone', '')
if phone:
code = generate_code()
# 将验证码保存到 session 中
request.session['sms_code'] = code
if send_sms(phone, code):
# 短信发送成功
return JsonResponse({'status': 0, 'msg': '验证码发送成功'})
else:
# 短信发送失败
return JsonResponse({'status': 1, 'msg': '验证码发送失败,请稍后再试'})
else:
return JsonResponse({'status': 1, 'msg': '手机号不能为空'})
```
3.在 urls.py 文件中配置对应的路由,例如:
```
from django.urls import path
from myapp.views import generate_and_send_code
urlpatterns = [
path('sms/code/', generate_and_send_code),
]
```
上述代码中,访问 /sms/code/ 路由时会调用 generate_and_send_code 函数,生成随机验证码并发送短信到指定手机号码。在发送短信时使用了短信服务商的 API 接口进行发送,可以根据实际情况更换为其他短信服务商的 API。同时,验证码也保存在 session 中,用于后续验证用户的输入是否正确。
阅读全文