Flask項目中實現(xiàn)短信驗證碼和郵箱驗證碼功能
Flask是一個用Python編寫的Web應用程序框架,F(xiàn)lask是python的web框架,最大的特征是輕便,讓開發(fā)者自由靈活的兼容要開發(fā)的feature。 它由 Armin Ronacher 開發(fā),他領導一個名為Pocco的國際Python愛好者團隊。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。兩者都是Pocco項目。
這篇文章給大家介紹Flask項目中實現(xiàn)短信驗證碼和郵箱驗證碼功能,具體內(nèi)容如下所示:
一、發(fā)送郵箱驗證碼
1、使用QQ郵箱發(fā)送驗證碼
①配置
開啟pop3/smtp服務
2、應用
①前端頁面
②config.py
# 郵箱配置 # MAIL_USE_TLS:端口號587 # MAIL_USE_SSL:端口號465 # QQ郵箱不支持非加密方式發(fā)送郵件 # 發(fā)送者郵箱的服務器地址 MAIL_SERVER = "smtp.qq.com" MAIL_PORT = '587' MAIL_USE_TLS = True # MAIL_USE_SSL MAIL_USERNAME = "1414518976@qq.com" MAIL_PASSWORD = "*****" # 生成授權碼,授權碼是開啟smtp服務后給出的 MAIL_DEFAULT_SENDER = 1414518976@qq.com
③views.py
點擊獲取驗證碼,進入到以下視圖,發(fā)送郵件,把驗證碼存到memcache數(shù)據(jù)庫。
from flask_mail import Message,Mail mail = Mail() @bp.route('/email_captcha/') @login_requires def email_captcha(): email = request.args.get('email') if not email: return restful.params_error('請輸入郵箱') #restful. 封裝的函數(shù),返回前端數(shù)據(jù) ''' 生成隨機驗證碼,保存到memcache中,然后發(fā)送驗證碼,與用戶提交的驗證碼對比 ''' captcha = str(uuid.uuid1())[:6] # 隨機生成6位驗證碼 # 給用戶提交的郵箱發(fā)送郵件 message = Message('Python論壇郵箱驗證碼', recipients=[email], body='您的驗證碼是:%s' % captcha) try: mail.send(message) # 發(fā)送 except: return restful.server_error() mbcache.set(email, captcha) return restful.success()
點擊立即修改,
以post請求發(fā)到后臺,對用戶提交的數(shù)據(jù)進行校驗:拿出memcache中存儲的驗證碼與用戶提交的驗證碼對比,校驗郵箱格式。校驗通過后把新郵箱保存到數(shù)據(jù)庫,返回前端提示信息。郵箱驗證功能完成。
二、實現(xiàn)短信驗證碼
1、平臺以及配置
平臺:阿里大于
配置:1、添加模板
2、添加簽名
3、獲取
即下面的key和secret
2、flask中使用
config.py
#發(fā)送短信驗證碼配置 KEY="*******" SECRET="*******" alidayu.py發(fā)送短信功能實現(xiàn) from aliyunsdkcore.client import AcsClient #需要先下載包 from aliyunsdkcore.request import CommonRequest import config def send_sms(telephone, captcha): client = AcsClient(config.KEY, config.SECRET, 'cn-hangzhou') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', telephone) #發(fā)送的手機號 request.add_query_param('SignName', "flask論壇") #SignName簽名 request.add_query_param('TemplateCode', "SMS_174806057") #模板id code = {} code['code'] = captcha request.add_query_param('TemplateParam', code) #模板中要填入的數(shù)據(jù) response = client.do_action(request) # python2: print(response) return str(response, encoding='utf-8')
調(diào)用是send_sms('手機號','驗證碼'),即可發(fā)送短信。(當然余額得有錢.)
總結
以上所述是小編給大家介紹的Flask項目中實現(xiàn)短信驗證碼和郵箱驗證碼功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
刪除pandas中產(chǎn)生Unnamed:0列的操作
這篇文章主要介紹了刪除pandas中產(chǎn)生Unnamed:0列的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03淺析python打包工具distutils、setuptools
python包在開發(fā)中十分常見,一般的使用套路是所有的功能做一個python模塊包,打包模塊,然后發(fā)布,安裝使用。這篇文章給大家介紹了python打包工具distutils、setuptools的相關知識,感興趣的朋友一起看看吧2018-04-04利用python求解物理學中的雙彈簧質(zhì)能系統(tǒng)詳解
這篇文章主要給大家介紹了關于利用python如何求解物理學中的雙彈簧質(zhì)能系統(tǒng)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-09-09Keras構建神經(jīng)網(wǎng)絡踩坑(解決model.predict預測值全為0.0的問題)
這篇文章主要介紹了Keras構建神經(jīng)網(wǎng)絡踩坑(解決model.predict預測值全為0.0的問題),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07