项目开发git操作

基本流程

"""
1、开发前,拉一次远程仓库
2、工作区进行开发
3、将开发结果提交到本地版本库 - git status查看时没有待处理的事件
4、拉取远程仓库(每一次要提交远程仓库前必须先拉)
5、如果出现冲突,线下沟通(协商重新开发冲突文件),要重新走3、4步
6、没有冲突,提交到远程仓库
"""

拉取代码,克隆下载到本地

协同开发

"""
1)所有人在一个分支上进行开发 - 通常开发分支名为dev
2)遵循git开发流程:先提交本地版本库,再拉取服务器代码,最后提交代码 提交本地版本库:git commit -m '版本信息'
拉取服务器代码:git pull 源名 分支名
提交代码:git push 源名 分支名
"""

冲突解决

"""
1)打开冲突文件
2)定位到冲突位置: >>>>>冲突开始 自身代码 ==== 冲突代码 <<<<<<版本号
3)删除冲突提示信息:>>>>>冲突开始、====、<<<<<<版本号
4)线下沟通整合自身代码与冲突代码,形成最终代码结果
5)重新提交本地版本库,再拉取服务器代码,最后提交代码
"""

提交不成功时,可以添加更换远程源地址

合并开发

"""
eg:将dev分支内容合并到prod分支上
1)切换到prod分支:git checkout prod
2)合并dev分支:git merge dev
"""

远程合并开发,直接设置即可

pycharm使用git

  结合git终端命令结合使用,先给项目创建init库,add.到暂存区,打开pycharm如下操作即可。

执行提交到版本库:

短信验证

开通腾讯云短信

"""
1、官网注册实名账号:https://cloud.tencent.com
2、选取短信服务创建短信应用
3、申请签名与短信模板 - 通过微信公众号申请
"""

腾讯云短信服务的使用文档,按文档说明安装模块导入使用即可。

安装模块

pip install qcloudsms_py

主要参数的配置:

准备必要参数

# 短信应用 SDK AppID
appid = 1400009099 # SDK AppID 以1400开头
# 短信应用 SDK AppKey
appkey = "9ff91d87c2cd7cd0ea762f141975d1df37481d48700d70ac37470aefc60f9bad"
# 需要发送短信的手机号码
phone_numbers = ["", "", ""]
# 短信模板ID,需要在短信控制台中申请
template_id = 7839 # NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请
# 签名
sms_sign = "腾讯云" # NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请

指定模板 ID 单发短信

from qcloudsms_py import SmsSingleSender
from qcloudsms_py.httpclient import HTTPError
ssender = SmsSingleSender(appid, appkey)
params = [""] # 当模板没有参数时,`params = []`
try:
result = ssender.send_with_param(86, phone_numbers[0],
template_id, params, sign=sms_sign, extend="", ext="")
except HTTPError as e:
print(e)
except Exception as e:
print(e)
print(result)

腾讯云短信二次封装

根据腾讯云提供的短信模板,修改二次封装并使用。

libs/txsms/settings.py
# 短信应用 SDK AppID - SDK AppID 以1400开头
APP_ID = ...
# 短信应用 SDK AppKey
APP_KEY = "..."
# 短信模板ID,需要在短信控制台中申请
TEMPLATE_ID = ...
# 签名 - 是`签名内容`,而不是`签名ID`
SMS_SIGN= "..."
# 电话前缀
MOBILE_PREFIX = 86

libs/txsms/sms.py

# 通过MacOS ssl安全认证
import ssl
ssl._create_default_https_context = ssl._create_unverified_context # 获取验证码的功能
import random
def get_code():
code = ''
for i in range(4):
code += str(random.randint(0, 9))
return code # 短信发送者
from qcloudsms_py import SmsSingleSender
from .settings import *
sender = SmsSingleSender(APP_ID, APP_KEY) # 发送验证码
from utils.logging import logger
def send_sms(mobile, code, exp):
try:
# 发送短信
response = sender.send_with_param(MOBILE_PREFIX,
mobile, TEMPLATE_ID, (code, exp), sign=SMS_SIGN, extend="", ext="")
# 成功
if response and response['result'] == 0:
return True
# 失败
logger.warning('%s - %s' % ('短信发送失败', response['result']))
except Exception as e:
# 异常
logger.warning('%s - %s' % ('短信发送失败', e))
return False

libs/txsms/__init__.py

# 包对外提供的功能方法
from .sms import get_code, send_sms

测试

from libs import txsms
code = txsms.get_code()
print(code)
print(txsms.send_sms('电话', code, 5))

短信发送接口分析

from rest_framework.views import APIView
# 发送验证码接口分析
class SMSAPIView(APIView):
def post(self, request, *args, **kwargs):
pass
# 1)拿到前台的手机号
# 2)调用txsms生成手机验证码
# 3)调用txsms发送手机验证码
# 4)失败反馈信息给前台
# 5)成功服务器缓存手机验证码 - 用缓存存储(方便管理) - redis
# 6)反馈成功信息给前台

验证码数据的校验的存储问题,引入了数据缓存,执行的效率,redis。

redis数据库

学习内容可以参考菜鸟教程的文章,比较全面。

:https://www.runoob.com/redis/redis-commands.html

为什么要学习Redis?

"""
1、redis是内存 no-sql 数据库,相比mysql等硬盘数据库效率高
2、在内存值配置数据库使用,而不直接使用内存,redis存储的数据是可以管理的
3、memcache也是内存数据库,且django默认采用的就是memcache数据库,用redis替换memcache的路由很简单,后者更强大
redis支持更多的数据类型
redis自带缓存机制,出现数据库系统崩溃数据也是可以有找回的功能
redis可以主动完成数据持久化(自带数据持久化功能)
redis的数据过期时间机制也可以自身完成
"""

总结:Redis与其他key-value缓存产品有一下三个特点

1、Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2、Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3、Redis支持数据的备份,即master-slave模式的数据备份。

redis安装

注:在官网安装系统版本,下载对应安装包安装即可

基础命令

"""
启动服务:
>: redis-server & 启动客户端连接redis
>: redis-cli -h localhost -p 6379 -n 数据库编号(0~15) 连接成功后切换数据库
>: select 数据库编号 """

命令行简单使用redis:

-- redis-cli  # 启动客户端
-- set key value # 设置值
-- get key # 取出值

常用的设置获取名字操作

有时候会有中文乱码,要在redis-cli后面加上 --raw

redis-cli --raw

就可以避免中文的乱码了

redis数据类型

"""
支持的数据类型:String、Hash、List、Set、Sorted Set String:存储其他类型不能存的所有数据
Hash:存储 key-value 形式数据,类似于字典
List:存储 一系列有序value 形式数据,列表(数组)
Set:存储 一系列无序value 形式数据,集合
Sorted Set:存储 有排列标号value 形式数据,排行
"""

字符串类型

""" 重要方法
set:key value
get:key
mset:k1 v1 k2 v2 ... kn vn
mget:k1 k2 ... kn
setex:key exp value
"""

将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。

SETEX key seconds value

常用的命令

序号 命令及描述
1 SET key value
设置指定 key 的值
2 GET key
获取指定 key 的值。
3 GETRANGE key start end
返回 key 中字符串值的子字符
4 GETSET key value
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
5 GETBIT key offset
对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
6 MGET key1 [key2..]
获取所有(一个或多个)给定 key 的值。

Redis 哈希(Hash)

  Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象,类似字典形式。

常用的命令

"""
常用方法:
单增:hset key field value
单查:hget key field
所有键值:hgetall key
单删:hdel key field
所有key:hkeys key
所有值:hvals key
"""

列表操作

  Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

"""
右增: rpush key v1 v2 ... vn
左增: lpush key v1 v2 ... vn
修改: lset key index value
左删: lpop key
右删: rpop key
插入:linsert key before|after old_value new_value
区间:lrange key begin_index end_index
"""

集合操作

"""
增:sadd key v1 v2 ... vn
差集:sdiff key1 key2
并集:sinter key1 key2
交集:sunion key1 key2
查:smembers key
随机删:spop key
"""

有序集合

"""
增:zadd key score1 value1 score2 value2 ... scoren valuen
区间个数:zcount key begin_score end_score
排行低到高:zrange key begin_index end_index
排行高到低:zrevrange key begin_index end_index
"""

项目开发git-短信验证-redis数据库的更多相关文章

  1. Luffy之注册认证(容联云通讯短信验证)

    用户的注册认证 前端显示注册页面并调整首页头部和登陆页面的注册按钮的链接. 注册页面Register,主要是通过登录页面进行改成而成. 先构造前端页面 <template> <div ...

  2. 『实践』Android之短信验证码(用的Mob短信验证)

    1.参考资料 Mob网站:http://www.mob.com/ Mob在Github上的例子:https://github.com/MobClub/SMSSDK-for-Android 教程:htt ...

  3. [权限管理系统(四)]-spring boot +spring security短信认证+redis整合

    [权限管理系统]spring boot +spring security短信认证+redis整合   现在主流的登录方式主要有 3 种:账号密码登录.短信验证码登录和第三方授权登录,前面一节Sprin ...

  4. 如何利用 LTE/4G 伪基站+GSM 中间人攻击攻破所有短信验证

    这次公开课请来的嘉宾对自己的简介是: 连续创业失败的创业导师:伪天使投资人:某非知名私立大学创办人兼校长:业余时间在本校通信安全实验室打杂. 自从他在黑客大会上演讲<伪基站高级利用技术——彻底攻 ...

  5. 【mob】Android短信验证+源码

    在很多的应用当中,都涉及到了短信验证的功能,比如在注册或者找回密码的时候,那么我们如何通过第三方的平台来完成这个功能呢? 本面博文就实现短信验证,来做一个小的栗子. 第一步-下载开发包 第二步-将SD ...

  6. 阿里云短信验证_基于阿里云OpenAPI实现

    阿里云短信服务 背景简介: 短信验证以及短信通知,目前已经应用的非常广泛,最近因项目需要,需要将原来的短信接口换成阿里云的的短信服务,原项目集成的短信服务能够实现短信的发送以及短信的验证整个过程,简单 ...

  7. django-实现登录短信验证

    功能演示 核心任务 前端功能: 点击按钮Ajax调用发送验证码功能 输完验证码后Ajax调用验证功能 后端功能: 功能1:发送验证码功能 功能2:验证码检查 后台核心逻辑(不需要手写) 功能3:发短信 ...

  8. Mob.com 短信验证的简单使用

    1.环境配置 http://wiki.sharesdk.cn/android-短信sdk集成文档/ a.sdk下载 http://www.mob.com/#/downloadDetail/SMS/an ...

  9. python基于LeanCloud的短信验证

    python基于LeanCloud的短信验证 1. 获取LeanCloud的Id.Key 2. 安装Flask框架和Requests库 pip install flask pip install re ...

随机推荐

  1. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-align-justify

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  2. Bean 注解(Annotation)配置(2)- Bean作用域与生命周期回调方法配置

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  3. 两表关联更新数据——oracle

    from testb b where b.id=a.id) ; (where exists(select 1 from testb b where b.id=a.id):如果没有这个条件,不匹配的选项 ...

  4. POJ - 2253 Frogger(最短路Dijkstra or flod)

    题意:要从起点的石头跳到终点的石头,设The frog distance为从起点到终点的某一路径中两点间距离的最大值,问在从起点到终点的所有路径中The frog distance的最小值为多少. 分 ...

  5. 电脑使用热键时是否需按住Fn键相关说明

    ThinkPad E系列机型 方法一: 在开机出现ThinkPad标志时,连续点F1(若无反应,请尝试Fn+F1)进入BIOS设置. 在BIOS中,依次选择Config---Keyboard/Mous ...

  6. POJ 2239:Selecting Courses 选课

    Selecting Courses Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9380   Accepted: 4177 ...

  7. Community Cloud零基础学习(三)Partner Account

    本篇参考:http://salesforce.vidyard.com/watch/bLE3QNRSej2iasw9vvc6Tk http://salesforce.vidyard.com/watch/ ...

  8. POJ 2771 最大点独立集

    这是经典的最大点独立集 还是可以转化成最大匹配数,为什么呢,因为求出最大匹配数之和,匹配的边的两个端点互斥,只能去一个,所以最后结果就用总点数-最大匹配数即可 #include <iostrea ...

  9. C#高级编程(第9版) 第10章 集合 笔记

    话说 虽然敲过好多代码, 但除了C++,一直没正眼瞧过其它语言.(没办法 谁叫C++既有oop又能自由控制内存呢) 今天 看公司老项目的src,c#的,linq+Dictionary的用法有感.所以找 ...

  10. Tomcat跨域

    先下载 cors-filter-2.6.jar  2.java-property-utils-1.9.1.jar,这两个文件有些在csdn上积分太高,有些要百度网盘,还要下载百度网盘客户端,太麻烦,直 ...