django_容联云_短信验证


1017短信验证

02_requests.py

"""
# @TIME: 2021/10/16 下午10:08
# @FILE: 02_requests.py
# @AUTHOR: HANG1720
# @COMMIT: 发送请求
"""
import requests

html = requests.get('http://www.jd.com')
print(html)
# 获取响应内容 -- 字符串
print(html.text)

sms.py

"""
# @TIME: 2021/10/16 下午9:24
# @FILE: sms.py
# @AUTHOR: HANG1720
# @COMMIT: 对接容联云短信平台
"""
import base64
import hashlib
import random
import time

import requests


class YunTongxun:
    base_url = 'https://app.cloopen.com:8883'

    def __init__(self, accountSid, accountToken, appId, templateId):
        self.accountSid = accountSid
        self.accountToken = accountToken
        self.appId = appId
        self.templateId = templateId

    def get_request_url(self, sig):
        """
            生成具体通信的业务url
        :param sig: 签名
        :return: 业务url
        """
        self.url = self.base_url + '/2013-12-26/Accounts/%s/SMS/TemplateSMS?sig=%s' % (
            self.accountSid, sig)
        return self.url

    def get_sig(self, timestamp):
        """
            生成签名: MD5加密(账户Id + 账户授权令牌 + 时间戳).upper()
        :param timestamp: 时间戳
        :return: 签名
        """
        s = self.accountSid + self.accountToken + timestamp
        m = hashlib.md5()
        m.update(s.encode())
        return m.hexdigest().upper()

    def get_timestamp(self):
        """
            时间戳
        :return: 时间戳
        """
        return time.strftime('%Y%m%d%H%M%S')

    def get_request_header(self, timestamp):
        """
            生成请求头:
                Authorization: Base64编码(账户Id + 冒号 + 时间戳)
        :param timestamp: 时间戳
        :return:
        """
        s = self.accountSid + ":" + timestamp
        auth = base64.b64encode(s.encode()).decode()
        return {
            "Accept": "application/json",
            "Content-Type": "application/json;charset=utf-8",
            "Authorization": auth
        }

    def get_request_body(self, phone, code):
        """
            构建请求体
        :param phone: 手机号
        :param code: 验证码
        :return: 请求体
        """
        return {
            "to": phone, "appId": self.appId,
            "templateId": self.templateId,
            "datas": [code, "1"]
        }

    def send_request(self, url, header, body):
        """
            发送请求
        :param url: 业务url
        :param header: 请求头
        :param body: 请求体
        :return: 容联云响应内容
        """
        res = requests.post(url=url, headers=header, json=body)
        return res.text
    def run(self, phone, code):
        """
            程序入口
        :return:
        """
        # 时间戳
        timestamp = self.get_timestamp()
        sig = self.get_sig(timestamp)
        url = self.get_request_url(sig)
        print(url)
        header = self.get_request_header(timestamp)
        print(header)
        body = self.get_request_body(phone, code)
        data = self.send_request(url, header, body)
        return data
if __name__ == '__main__':
    # 请将下面字典的值 更换为自己在控制台获取到的 accountSid accountTokeappId
    config = {
        "accountSid": "8a216da87c304531017c87d6bd0c0d3f",
        "accountToken": "66283b3d8f8349419efa14f296794b78",
        "appId": "8a216da87c304531017c87d6be380d46",
        "templateId": "1"
    }
    ytx = YunTongxun(**config)
    # 请将手机号更换为自己的
    code = random.randint(1000, 9999)
    res = ytx.run("15190060586", code)
    print(code)
    print(res)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django_celery_beat是一个django应用程序,它允许您使用celery定期运行周期性任务。这些周期性任务可以是一次性的或循环的,你可以设置它们在指定的时间间隔内自动运行,也可以设置它们在特定的时间运行。 要使用django_celery_beat,请按照以下步骤操作: 1. 安装django_celery_beat: ``` pip install django_celery_beat ``` 2. 在settings.py中添加以下代码: ``` INSTALLED_APPS = [ # ... 'django_celery_beat', ] CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' ``` 3. 在项目的urls.py文件中添加以下代码: ``` from django.urls import path from django_celery_beat.views import ( PeriodicTaskListView, PeriodicTaskCreateView, PeriodicTaskUpdateView, PeriodicTaskDeleteView, PeriodicTaskDetailView, ) urlpatterns = [ # ... path('celery/periodic-tasks/', PeriodicTaskListView.as_view(), name='periodic_task_list'), path('celery/periodic-task/add/', PeriodicTaskCreateView.as_view(), name='periodic_task_create'), path('celery/periodic-task/<int:pk>/', PeriodicTaskDetailView.as_view(), name='periodic_task_detail'), path('celery/periodic-task/<int:pk>/update/', PeriodicTaskUpdateView.as_view(), name='periodic_task_update'), path('celery/periodic-task/<int:pk>/delete/', PeriodicTaskDeleteView.as_view(), name='periodic_task_delete'), ] ``` 4. 在celery.py文件中添加以下代码: ``` from celery import Celery from django.conf import settings app = Celery('my_project') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) ``` 5. 在tasks.py文件中创建您的任务,例如: ``` from celery import shared_task @shared_task def my_task(): # Do something here ``` 6. 创建周期性任务,您可以使用Django admin或创建它们的视图。 现在,您已经可以在django中使用celery定期运行周期性任务了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值