首页 > 其他 > 详细

项目2

时间:2019-11-08 22:50:16      阅读:136      评论:0      收藏:0      [点我收藏+]

用户的注册认证

注册功能的实现

接下来,我们把注册过程中一些注册信息(例如:短信验证码)和session缓存到redis数据库中。

安装django-redis。

pip install django-redis

在settings/dev.py配置中添加一下代码:

# 设置redis缓存
CACHES = {
    # 默认缓存
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        # 项目上线时,需要调整这里的路径
        "LOCATION": "redis://127.0.0.1:6379/0",

        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    # 提供给xadmin或者admin的session存储
    "session": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    # 提供存储短信验证码
    "sms_code":{
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/2",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

# 设置xadmin用户登录时,登录信息session保存到redis
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"

 

关于django-redis 的使用,说明文档可见http://django-redis-chs.readthedocs.io/zh_CN/latest/

django-redis提供了get_redis_connection的方法,通过调用get_redis_connection方法传递redis的配置名称可获取到redis的连接对象,通过redis连接对象可以执行redis命令

https://redis-py.readthedocs.io/en/latest/

使用范例:

from django_redis import get_redis_connection
// 链接redis数据库
redis_conn = get_redis_connection("sms_code")
// 操作redis
redis_conn.setex("","时间(秒)","") # 这个redis类把终端命令封装成了redis类的方法,命令的选项编程了方法的参数,所以这段代码的操作,等同于在终端下 sexex 键  时间 值

 

使用云通讯发送短信

在登录后的平台上面获取一下信息:

ACCOUNT SID:8a216da86e011fa3016e4aedea792a4e
AUTH TOKEN : 4fee1ea5d1024bce948db54b9161c97e
AppID(默认):8a216da86e011fa3016e4aedeacb2a54
Rest URL(生产): app.cloopen.com:8883       [项目上线时使用真实短信发送服务器]
Rest URL(开发): sandboxapp.cloopen.com:8883  [项目开发时使用沙箱短信发送服务器]

找到sdkdemo进行下载

技术分享图片

 

 

 在开发过程中,为了节约发送短信的成本,可以把自己的或者同事的手机加入到测试号码中.

技术分享图片

 

 

 

把云通讯的sdk保存到libs目录下, 并修改里面的基本配置信息。

sms.py,代码:

技术分享图片
# -*- coding:utf-8 -*-

from .CCPRestSDK import REST
from django.conf import settings

# 说明:主账号,登陆云通讯网站后,可在"控制台-应用"中看到开发者主账号ACCOUNT SID
_accountSid = settings.SMS["_accountSid"]

# 说明:主账号Token,登陆云通讯网站后,可在控制台-应用中看到开发者主账号AUTH TOKEN
_accountToken = settings.SMS["_accountToken"]
# 6dd01b2b60104b3dbc88b2b74158bac6
# 请使用管理控制台首页的APPID或自己创建应用的APPID
_appId = settings.SMS["_appId"]
# 8a216da863f8e6c20164139688400c21
# 说明:请求地址,生产环境配置成app.cloopen.com
_serverIP = settings.SMS["_serverIP"]

# 说明:请求端口 ,生产环境为8883
_serverPort = settings.SMS["_serverPort"]

# 说明:REST API版本号保持不变
_softVersion = 2013-12-26

# 云通讯官方提供的发送短信代码实例
# # 发送模板短信
# # @param to 手机号码
# # @param datas 内容数据 格式为数组 例如:{‘12‘,‘34‘},如不需替换请填 ‘‘
# # @param $tempId 模板Id
#
# def sendTemplateSMS(to, datas, tempId):
#     # 初始化REST SDK
#     rest = REST(serverIP, serverPort, softVersion)
#     rest.setAccount(accountSid, accountToken)
#     rest.setAppId(appId)
#
#     result = rest.sendTemplateSMS(to, datas, tempId)
#     for k, v in result.iteritems():
#
#         if k == ‘templateSMS‘:
#             for k, s in v.iteritems():
#                 print ‘%s:%s‘ % (k, s)
#         else:
#             print ‘%s:%s‘ % (k, v)


class CCP(object):
    """发送短信的辅助类"""

    def __new__(cls, *args, **kwargs):
        # 判断是否存在类属性_instance,_instance是类CCP的唯一对象,即单例
        if not hasattr(CCP, "_instance"):
            cls._instance = super(CCP, cls).__new__(cls, *args, **kwargs)
            cls._instance.rest = REST(_serverIP, _serverPort, _softVersion)
            cls._instance.rest.setAccount(_accountSid, _accountToken)
            cls._instance.rest.setAppId(_appId)
        return cls._instance

    def send_template_sms(self, to, datas, temp_id):
        """发送模板短信"""
        # @param to 手机号码
        # @param datas 内容数据 格式为数组 例如:{‘12‘,‘34‘},如不需替换请填 ‘‘
        # @param temp_id 模板Id
        result = self.rest.sendTemplateSMS(to, datas, temp_id)
        # 如果云通讯发送短信成功,返回的字典数据result中statuCode字段的值为"000000"
        return result.get("statusCode") == "000000"


if __name__ == __main__:
    ccp = CCP()
    # 注意: 测试的短信模板编号为1[以后申请了企业账号以后可以有更多的模板]
    # 参数1: 客户端手机号码,测试时只能发给测试号码
    # 参数2: 短信模块中的数据
    #        短信验证码
    #        短信验证码有效期提示
    # 参数3: 短信模板的id,开发测试时,只能使用1

    ccp.send_template_sms(17610211902, [1234,"5分钟"], 1)
View Code

 

配置文件,代码:

# 云通讯短信
SMS = {
    # 说明:主账号,登陆云通讯网站后,可在"控制台-应用"中看到开发者主账号ACCOUNT SID
    "_accountSid":8a216da863f8e6c20164139687e80c1b,

    # 说明:主账号Token,登陆云通讯网站后,可在控制台-应用中看到开发者主账号AUTH TOKEN
    "_accountToken":4fee1ea5d1024bce948db54b9161c97e,

    # 请使用管理控制台首页的APPID或自己创建应用的APPID
    "_appId":8a216da86e011fa3016e4aedeacb2a54,

    # 说明:请求地址,生产环境配置成app.cloopen.com
    "_serverIP":sandboxapp.cloopen.com,

    # 说明:请求端口 ,生产环境为8883
    "_serverPort": "8883",
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

项目2

原文:https://www.cnblogs.com/Pythonzrq/p/11823167.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!