web專案015 簡訊驗證碼後端邏輯實現

2021-10-10 20:39:51 字數 1997 閱讀 2667

接著上一章

我們判斷手機號就要用到資料庫,所以我們要匯入models中的user表進行查詢

from lghome.models import user
接下來在進行判斷

# 判斷手機號是否存在(註冊)

try:

user = user.query.filter_by(mobile=mobile).first()

except exception as e:

logging.error(e)

else:

if user is not none:

# 表示手機好已經被註冊過

return jsonify(errno=ret.dataerr,errmsg='手機號已經存在')

我們想讓他生成6位隨機的簡訊驗證碼,所以我們需要匯入random模組

import random
怎麼做出6位隨機數呢,我們一開始可能回想使用for迴圈

sms_code = random.randint(0,9)
這樣太麻煩了,那我們這樣呢

sms_code = random.randint(0,999999)
但是這樣會生成1位,兩位的隨機數,那這樣呢

sms_code = random.randint(100000,999999)
但是這樣又不回生成000006這樣的隨機數

所以我們使用%

sms_code = '%6d' % random.randint(0,999999)
但是這樣有可能會出現『 45678』前面空出來的5位數,那我們怎麼辦呢

sms_code = '%06d' % random.randint(0,999999)
這時候我們要確定儲存的資料型別

我們使用字串setex,回想一下我們圖形驗證碼是怎麼設定的

# 儲存真實的簡訊驗證碼到redis中

try:

redis_store.setex("sms_code_%s" % mobile,constans.sms_code_redis_expires,sms_code)

except exception as e:

logging.error(e)

return jsonify(errno=ret.dberr, errmsg='儲存簡訊驗證碼異常')

匯入之前寫好的傳送簡訊的庫

# 發簡訊

try:

ccp = ccp()

result = ccp.send_message(mobile,(sms_code,int(constans.sms_code_redis_expires/60)),1)

except exception as e:

logging.error(e)

return jsonify(errno=ret.thirderr, errmsg='傳送異常')

# 返回值

if result == 0:

return jsonify(errno=ret.ok,errmsg='傳送成功')

else:

return jsonify(errno=ret.thirderr,errmsg='傳送失敗')

然後我們進入**嘗試一下,成功

簡訊驗證碼

簡訊驗證碼 圍繞以下兩個方法開展 1 sendcaptcha 獲取驗證碼 2 commitcaptcha 提交驗證碼 方法 1 addtextchangedlistener 文字變化 2 requestfocus 請求焦點 3 string phone etphonenum.gettext tost...

簡訊驗證碼

你的key access key secret 你自己的key 注意 不要更改 region cn hangzhou product name dysmsapi domain dysmsapi.aliyuncs.com acs client acsclient access key id,acces...

簡訊驗證碼後端 介面設計

介面檢視 實現 傳送簡訊驗證碼可以使用容聯雲通訊實現 生成簡訊驗證碼 class smscodeview view def get self,request,mobile 注意 image code id就是uuid image code request.get.get image code uui...