Python接入三方平台

Python接入三方平台

在当今互联网时代,Web应用的开发已经成为了人们日常工作中不可或缺的一部分。在开发Web应用过程中,我们经常需要接入第三方平台,以实现各种功能,如发送短信验证码、上传图片、视频等。Python 作为一种简单、易学、高效的编程语言,越来越受到Web开发者的青睐。本文将介绍如何使用Python接入三方平台,以及如何使用Python实现验证码生成、短信验证码的发送与验证、文件上传到云存储等功能。

生成随机验证码和验证手机号的函数

在Web应用中,通常需要使用验证码来防止恶意行为,如暴力破解、恶意注册等。Python提供了随机数生成模块random,可以用于生成随机验证码。具体实现可以参考下面的代码:

import random

def random_code(length=6):
    """生成随机短信验证码"""
    return ''.join(random.choices('0123456789', k=length))

除了生成验证码,还需要验证手机号的有效性。在中国,手机号码由11位数字组成,可以使用正则表达式来验证手机号的有效性。下面的代码实现了一个检查手机号格式的函数:

import re

TEL_PATTERN = re.compile(r'1[3-9]\\\\d{9}')

def check_tel(tel):
    """检查手机号"""
    return TEL_PATTERN.fullmatch(tel) is not None

发送短信验证码的视图函数

在Web应用中,通常需要向用户发送短信验证码,以验证用户的手机号是否为真实有效的。下面的代码实现了一个视图函数,用于根据手机号发送短信验证码。该视图函数利用了Redis实现了两个额外的功能,一个是阻止用户60秒内重复发送短信验证码,一个是将用户的短信验证码保留10分钟,也就是说这个短信验证码的有效期只有10分钟,可以用于用户在注册时提供该验证码来验证用户手机号的真实性。

from django_redis import get_redis_connection

@api_view(('GET', ))
def get_mobilecode(request, tel):
    """获取短信验证码"""
    if check_tel(tel):
        redis_cli = get_redis_connection()
        if redis_cli.exists(f'vote:block-mobile:{tel}'):
            data = {'code': 30001, 'message': '请不要在60秒内重复发送短信验证码'}
        else:
            code = random_code()
            send_mobile_code(tel, code)
            # 通过Redis阻止60秒内容重复发送短信验证码
            redis_cli.set(f'vote:block-mobile:{tel}', 'x', ex=60)
            # 将验证码在Redis中保留10分钟(有效期10分钟)
            redis_cli.set(f'vote2:valid-mobile:{tel}', code, ex=600)
            data = {'code': 30000, 'message': '短信验证码已发送,请注意查收'}
    else:
        data = {'code': 30002, 'message': '请输入有效的手机号'}
    return Response(data)

接入云存储服务

当我们提到云存储这个词的时候,通常是指把数据存放在由第三方提供的虚拟服务器环境下,简单的说就是将某些数据或资源通过第三平台托管。一般情况下,提供云存储服务的公司都运营着大型的数据中心,需要云存储服务的个人或组织通过向其购买或租赁存储空间来满足数据存储的需求。在开发Web应用时,可以将静态资源,尤其是用户上传的静态资源直接置于云存储服务中,云存储通常会提供对应的URL使得用户可以访问该静态资源。国内外比较有名的云存储服务(如:亚马逊的S3、阿里的OSS2等)一般都物美价廉,相比自己架设静态资源服务器,云存储的代价更小,而且一般的云存储平台都提供了CDN服务,用于加速对静态资源的访问,所以不管从哪个角度出发,使用云存储的方式管理Web应用的数据和静态资源都是非常好的选择,除非这些资源涉及到个人或商业隐私,否则就可以托管到云存储中。

下面我们以接入七牛云为例,讲解如何实现将用户上传的文件保存到七牛云存储。七牛云是国内知名的云计算及数据服务提供商,其产品包括对象存储、CDN加速、数据处理、云函数等功能。在使用七牛云进行文件上传之前,需要先到七牛云官网注册账号并创建存储空间,然后通过API获取Access Key和Secret Key,以及存储空间的域名等信息。在Python中,可以使用qiniu包来接入七牛云,具体实现可以参考下面的代码:

import qiniu

access_key = '******'
secret_key = '******'
bucket_name = 'your_bucket_name'
domain = 'your_domain'

def upload_file_to_qiniu(file_name, file_data):
    """上传文件到七牛云"""
    q = qiniu.Auth(access_key, secret_key)
    token = q.upload_token(bucket_name, file_name)
    ret, info = qiniu.put_data(token, file_name, file_data)
    if info.status_code == 200:
        file_url = f'http://{domain}/{file_name}'
        return file_url
    else:
        return None

上面的代码中,access_keysecret_key是七牛云提供给开发者的访问秘钥,bucket_name是存储空间的名称,domain是存储空间的域名。upload_file_to_qiniu函数用于实现文件上传到七牛云,并返回文件的URL地址。在该函数中,首先使用Auth类创建一个认证对象q,然后使用upload_token方法生成上传凭证token,最后使用put_data方法将文件数据上传到七牛云存储中。

总结

本文介绍了Python如何接入三方平台,包括验证码生成、短信验证码的发送与验证、文件上传到云存储等功能。通过本文的学习,读者可以了解到如何使用Python实现这些功能,并掌握相关的编程技巧。在Web开发过程中,接入第三方平台是一项非常重要的工作,只有掌握了这些技能,才能更好地完成Web应用的开发工作。希望本文对读者有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/11919.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux基础命令-seq打印数字序列

Linux基础命令-sed流编辑器 前言 seq命令通常是用来打印一串有规律的数字,常与其他命令搭配使用,一起来看下它的用法。 一. 命令介绍 在doc文档中查看seq命令的含义 NAMEseq - print a sequence of numbers DESCRIPTIONPrint numbers from FIRST to…

李宏毅教程系列——增强学习

目录 0. 强化学习wiki 1. 介绍 2. Exploration vs Exploitation 探索与开发 3. 各类最优化方法 3.1 Brute force猛兽蛮力法(暴力搜索) 3.2 Value function estimation(价值函数估计) 3.2.1 Monte Carlo methods 蒙特卡洛方…

3年经验,面试测试岗只会功能测试开口要求18K,令我陷入沉思。

由于朋友临时有事, 所以今天我代替朋友进行一次面试,公司需要招聘一位自动化测试工程师,我以很认真负责的态度完成这个过程, 大概近30分钟。 主要是技术面试, 在近30分钟内, 我与被面试者是以交流学习的方式…

【Linux】通过网络版计算器来认识协议

​🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉再谈协议&…

腾讯云4核8G12M轻量服务器配置性能评测

腾讯云轻量4核8G12M服务器,之前是4核8G10M配置,现在公网带宽和月流量包整体升级,12M公网带宽下载速度可达1536KB/秒,系统盘为180GB SSD盘,每月2000GB免费流量,腾讯云百科来详细说下4核8G12M轻量应用服务器配…

AJAX | 拦截器、文件上传和下载

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! AJAX Ajax即Asynchronous Javascript And XML(异步JavaScript和XML);Ajax技术网页应用能够快速地将增量更新呈现在用户界面上&…

锁子甲 bulid+sim

链接: youtube 分析:洒一堆点——copy 模型——点和模型符合一定规律 点和点的距离符合上述图中的关系 (横纵) 横向 但是我们要横向10个点够了: 用modulo 除余 纵向 这里用除法向上取整 /10 eg : 0-9 得0 10-19 得1…

redis哨兵模式配置(配置文件等)

Redis-Sentinel机制主要用三个功能: (1)监控:不停监控Redis主从节点是否安装预期运行 (2)提醒:如果Redis运行出现问题可以 按照配置文件中的配置项 通知客户端或者集群管理员 (3)自动故障转移:当主节点下线之后,哨兵…

【版本控制】Github同步Gitee镜像仓库自动化脚本

文章目录Github同步Gitee镜像仓库自动化脚本前言什么是Hub Mirror Action?1.介绍2.用法配置步骤1.生成密钥对2.GitHub私钥配置3.Gitee公钥配置4.Gitee生成私人令牌5.Github绑定Gitee令牌6.编写CI脚本7.多仓库同步推送8.定时运行脚本总结Github同步Gitee镜像仓库自动…

【MyBatis Plus】002 -- 通用CRUD(插入、更新、删除、查询)

目录 3、通用CRUD 3.1 插入操作 3.1.1 方法定义 3.1.2 测试用例 3.1.3 测试 3.1.4 TableField 3.2 更新操作 3.2.1 根据id更新 3.2.2 根据条件更新 3.3 删除操作 3.3.1 根据id删除(deleteById) 3.3.2 根据Map删除数据(deleteByMap&#xff09…

Level_2(2)题目整理

文章目录L2-022 重排链表(模拟❗)L2-023 图着色问题L2-024 部落(并查集)L2-025 分而治之(与 L2-023差不多,邻接表遍历)L2-026 小字辈(求树的深度)L2-027 名人堂与代金券(💡处理&…

得物 API一站式协作平台的一些思考

1.背景 Mooncake是得物API一站式协作平台。从2022年3月份开始负责Mooncake,到现在已经一年了,回顾这一年,Mooncake大的阶段上,总共经历过两个版本: 1、Mooncake 1.0: 面向前端和客户端的mock平台,主要解决接口调用者…

C++实现前缀树

文章目录1. 什么是前缀树2. 前缀树的实现2.1 前缀树的基本结构2.2 插入2.3 word出现了几次2.3 word作为前缀出现几次2.4 删除1. 什么是前缀树 假设这里有一个字符串数组,和一个树的根结点: 这个结点的pass意思是:有几个字符通过了这个结点。…

ubuntu下Thrift安装

thrift是一种常用rpc框架,工作中经常会用到,本文记录一下其安装过程。 目录 1.下载软件包 1.1thrift下载 1.2libevent下载 1.3boost下载 2.安装(注意步骤) 2.1安装libevent 2.2安装boost 2.3安装与Python2.7版本对应的py…

【工作感悟】老程序员总结的四条工作经验教训

文章目录前言1. 不要做小需求2. 要做大需求3. 定期同步工作进度4. 项目结束,主动复盘总结前言 想来从事互联网工作已经很多年了,已经从当初的懵懂少年逐渐退化成老油条。刚毕业的时候,真是个愣头青,什么都不懂,也什么…

UE4 回放系统升级到UE5之后的代码报错问题解决

关键词: UE4 回放系统 升级 UE5 报错 DemoNetDriver GetDemoCurrentTime GetDemoTotalTime 背景 照着网上教的UE4的回放系统,也叫重播系统,英文Replay。做完了,测试运行正常,可升级到UE5却报了一堆 WorldSetting 和 …

计算机组成原理——第五章中央处理器

半生风雨半生伤,半醉半醒半心凉 文章目录前言5.1 CPU的功能和基本结构5.2 指令周期的数据流5.3.1 单总线结构5.3.2 专用通路结构前言 之前我们就说过CPU主要包括两个部分,运算器和控制器,运算器主要是实现算数运算.逻辑运算, 运算…

亲测:腾讯云轻量应用服务器性能如何?

腾讯云轻量应用服务器性能评测,轻量服务器CPU主频、处理器型号、公网带宽、月流量、Ping值测速、磁盘IO读写及使用限制,轻量应用服务器CPU内存性能和标准型云服务器CVM处于同一水准,所以大家不要担心轻量应用服务器的性能,腾讯云百…

springboot项目中的mysql用国产数据库达梦替换的相关说明

一、 用“DM管理工具”的“管理用户”创建你需要用户,也是达梦的模式。 用户的权限问题可以直接角色授权,方便一些。 二、借用达梦的“DM数据迁移工具”做数据库的表内容转移。 1. 新建工程、新建迁移 编辑mysql的数据库源 编辑达梦的目的端数据库 选择之…

应届生通过Java培训班转行IT有前途吗?

借用邓小平同志曾说过的一句话:科学技术是第一生产力。IT行业作为科技行业中的一员,不管是在自身的发展,还是支持其他行业的发展中都扮演了不可或缺的角色,“互联网”是社会发展的趋势,前途是无限的。而计算机语言是目…