为开源项目贡献代码-pycharm使用git-登录注册功能分析-判断手机号存在接口-多种方式登录接口-腾讯云短信申请

git内容大回顾

# GIT内容大回顾

# 1 版本管理软件:git  svn
代码合并
代码版本管理
协同开发 合并代码 # 2 git 跟 svn 区别 # 3 git安装:相应平台软件 下载完成 一路下一步---> 命令:git # 4 git gitlab(公司内部使用) gitee(国内最大) github(使用较少) bitbucket(国外使用多) # 5 git 工作流程
工作区
暂存区
版本库
远程仓库 # 6 git常用命令
git init 名字 # .git 是隐藏文件
git status # 查看工作区和暂存区
git add # 工作区---> 暂存区
git commit -m # 暂存区---> 版本库
git reset --hard 版本号 # 回退到某个版本
git log # 查看日志 详细版
git reflog # 查看日志 简略版 设置用户名(全局和局部)
git config --global user.name '用户名' # 7 git 忽略文件
.gitignore # 8 分支管理
git branch # 查看分支
git branch dev # 创建分支
git checkout dev # 切换到分支
git branch dev # 删除分支
git merge dev # 合并分支---> 在status分支下使用 将dev合并到status # 9 远程仓库(gitee)
远程:创建空仓库
本地:
git init
git add
git commit
# 添加远程仓库
git remote add origin 地址(ssh/http)
# 删除远程仓库
git remote remove origin
# 查看远程仓库
git remote git push origin master # 上传代码 http需要输入用户名密码
git pull origin master # 拉取代码 每次提交代码先拉取 # 10 git clone 地址
作为开发者 要把项目从远程仓库克隆下来进行开发
git clone 开源项目 # 没有任何阻碍 # 11 ssh操作远程仓库
公钥私钥
公钥配置在gitee上 以后使用ssh推送代码 就不需要验证
git remote add origin 地址(ssh) # 12 冲突解决(面试)
多人在同一分支开发
分支合并 # 13 线上分支合并
提交pr # 需要记住的重点命令
git add
git commit -m
git pull origin dev
git push origin dev

今日内容概要

  • 1 为开源项目贡献代码

  • 2 pycharm使用git

    • 2.1 先配置pycharm使用git
  • 3 登录注册功能分析

  • 4 手机号是否存在接口

    • 4.2 视图函数模板
  • 5 多方式登录接口

    • 5.1 视图类
    • 5.2 序列化类
  • 6 腾讯云短信申请

今日内容详细

1 为开源项目贡献代码

# github gitee 看到好的开源项目 发现有bug 为他增加新功能---> 你加入了代码---> 想合并进开源项目 如何做

# 步骤:
1 先fork开源项目---> 复制这个项目到我的仓库中
2 clone下来 改代码 一路提交到远端(我的仓库)
3 提交pr 等作者同意

2 pycharm使用git

# 只要用命令操作的 都可以点击完成

2.1 先配置pycharm使用git

3 登录注册功能分析

# 接口分析
校验手机号是否存在的接口
多方式登录接口:用户名/手机号/邮箱 +密码都可以登录
发送手机验证码接口 (借助于第三方短信平台)
短信登录接口
注册接口

4 手机号是否存在接口

views

from rest_framework.viewsets import GenericViewSet
from rest_framework.decorators import action
from .models import User
from utils.common_response import APIResponse class UserView(GenericViewSet):
@action(methods=['GET'], detail=False) # 保证这个接口的安全
def send_sms(self, request, *args, **kwargs):
try:
# 从地址栏中取出手机号 query_params: 拿出的是queryDict
mobile = request.query_params['mobile']
User.objects.get(mobile=mobile)
except Exception as e:
raise e
# return APIResponse(code=788, msg='手机号不存在')
return APIResponse(msg='手机号存在')

urls

# 总路由
path('api/v1/home/', include('home.urls')) # 分路由
from rest_framework.routers import SimpleRouter
from home import views router = SimpleRouter()
router.register('userinfo', views.UserView, 'userinfo') urlpatterns = [ ]
urlpatterns += router.urls

4.2 视图函数模板

    def send_sms(self, request, *args, **kwargs):
try:
# 放心大胆写
except Exception as e:
raise e
return APIResponse()

5 多方式登录接口

# 使用 用户名 手机号 邮箱 + 密码登录

# post---> {username:3@qq.com,password:123}

5.1 视图类

from rest_framework.viewsets import GenericViewSet
from rest_framework.decorators import action
from utils.common_response import APIResponse from .home_serializer import UserLoginSerializer
from .models import User class UserView(GenericViewSet):
serializer_class = UserLoginSerializer
queryset = User.objects.filter(is_active=True) @action(methods=['GET'], detail=False) # 保证这个接口的安全
def send_sms(self, request, *args, **kwargs):
try:
# 从地址栏中取出手机号 query_params: 拿出的是queryDict
mobile = request.query_params['mobile']
User.objects.get(mobile=mobile)
except Exception as e:
raise e
# return APIResponse(code=788, msg='手机号不存在')
return APIResponse(msg='手机号存在') @action(methods=['POST'], detail=False)
def login_mul(self, request, *args, **kwargs):
# 实例化 序列化对象 可以传入context字典 context是 视图类和序列化类沟通的桥梁
# 序列化类全局钩子 放入的
# 有了序列化类对象 通过 对象.context 就可以拿到值
ser = self.get_serializer(data=request.data)
ser.is_valid(raise_exception=True) # 执行这句话 会走字段自己的校验 局部钩子 全局钩子
token = ser.context.get('token')
username = ser.context.get('username')
return APIResponse(token=token, username=username) # {code:100,msg:成功,token:aasdfa,username:lqz}

5.2 序列化类

import re

from rest_framework import serializers
from .models import User
from utils.common_response import APIResponse from rest_framework_jwt.settings import api_settings jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER class UserLoginSerializer(serializers.ModelSerializer):
# 因为username字段有原本的校验规则---> 唯一值 我们重写这个字段避开唯一值
username = serializers.CharField() class Meta:
model = User
# username映射过来 是唯一的 字段自己的校验就过不了 所以要重写这个字段
fields = ['username', 'password'] # 这个序列化类用来校验字段 不做序列化 也不做反序列化 # 全局钩子 def validate(self, attrs):
# attrs是前端传入的数据 经过字段自己校验和局部钩子校验过后的数据 {username:lqz,password:123}
'''
把这个逻辑放在序列化类中
1 取出前端传入的用户名和密码
2 通过用户名和密码去数据库查询用户
3 如果能查到 签发token
4 返回给前端登录成功
'''
user = self._get_user(attrs)
token = self._get_token(user)
# 把用户名和token放到user的 context中
self.context['token'] = token
self.context['username'] = user.username
return attrs # 在类内部 隐藏属性和方法 __开头
# 公司内部约定俗成 不用__ 使用_ 表示不行给外部使用 但是实在是想用 根据名字直接用
def _get_user(self, attrs):
username = attrs.get('username')
password = attrs.get('password')
if re.match(r'^1[3-9][0-9]{9}$', username):
user = User.objects.filter(mobile=username).first()
elif re.match(r'^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$', username):
user = User.objects.filter(email=username).first()
else:
user = User.objects.filter(username=username).first()
if user and user.check_password(password):
return user
else:
# 用户不存在或密码错误 这里的代码 还是在全局钩子中执行 全局钩子校验失败 要抛异常
return APIResponse('用户不存在或密码错误') def _get_token(self, user):
payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)
return token

6 腾讯云短信申请

# 发送短信接口,借助于第三方短信平台,收费的
-腾讯云短信
-阿里 大于短信
-。。。。 # 申请微信公众号:自己搜 实名认证 # 使用腾讯短信
-https://cloud.tencent.com,微信扫码登录
-搜索短信:https://console.cloud.tencent.com/smsv2
- 创建短信签名:公众号注册,提交等待审核
- 创建短信正文模版
-等待审核
-发送短信
python 代码法搜昂短信 # API SDK
-API: 咱们学习过的API接口,写起来比较麻烦,自己分析接口 -SDK:集成开发工具包,分语言,java,python,go
-使用python 对api进行封装成包
-以后我们只需要,安装包,导入包,包名.发送短信,传入参数,就可以发送了 - 只要官方提供sdk,优先用sdk
pip install tencentcloud-sdk-python

为开源项目贡献代码-pycharm使用git-登录注册功能分析-判断手机号存在接口-多种方式登录接口-腾讯云短信申请的更多相关文章

  1. Pull Request的过程、基于git做的协同开发、git常见的一些命令、git实现代码的review、git实现版本的管理、gitlab、GitHub上为开源项目贡献代码

    前言: Pull Request的流程 1.fork 首先是找到自己想要pull request的项目, 然后点击fork按钮,此时就会在你的仓库中多出来一个仓库,格式是:自己的账户名/想要pull ...

  2. 在github上参与开源项目贡献代码

    1 登录github, 点击自己感兴趣的repository的fork按钮,这样自己的github主页会有一个拷贝. 2 在自己本地修改同时保持和原来的repository同步: git remote ...

  3. 腾讯云短信服务使用记录与.NET Core C#代码分享

    1.即使是相同的短信签名与短信正文模板,也需要针对“国内文本短信”与“海外文本短信”分别申请.开始不知道,以为只要申请一次,给国外手机发短信时给api传对应的国家码就行,后来才发现需要分别申请. 2. ...

  4. 使用GitHub进行协同项目开发和开源项目贡献

    本教程致力于摆脱git命令行快速的学习使用GitHub. 此次是GitHub课程的第三次课程,也是最后一次课程.推荐进行按照次序查看本次教程.上篇文章:程序员,一起玩转GitHub版本控制,超简单入门 ...

  5. 花20分钟写的-大白话讲解如何给github上项目贡献代码

    原文地址:http://site.douban.com/196781/widget/notes/12161495/note/269163206/ 本文献给对git很迷茫的新手,注意是新手,但至少会点基 ...

  6. (转)大白话讲解如何给github上项目贡献代码

    转自:https://site.douban.com/196781/widget/notes/12161495/note/269163206/ 2013-03-30 22:53:55   本文献给对g ...

  7. 大白话讲解如何给github上项目贡献代码

    本文献给对git很迷茫的新手,注意是新手,但至少会点基本操作,有点基本概念的新手,我不会从怎么用github和git是什么开始讲的.如果作为新手你看书又看不进去,原理又太复杂,又没有直接了当告诉我们怎 ...

  8. Springboot下实现阿里云短信验证功能(含代码)

    Springboot下实现阿里云短信验证功能 一 开通阿里云短信服务 阿里云官网注册登录 找到短信服务并开通 打开短信服务的管理台 在国内消息那栏中添加签名管理和模板管理(按照格式要求去写) 在右上角 ...

  9. 转帖:向开源项目贡献源码(以 Orchard 为例)

    原文地址:http://yangw80.blog.163.com/blog/static/247518002201552692516908/ 在开源项目满天飞的时代,仅仅把开源项目拿来用是不够的,要适 ...

  10. [GitHub]第六讲:开源项目贡献流程

    Github 是目前世界上最大的开源项目的托管交流平台.贡献开源项目的流程也是 Github 全力支持的,也一样是遵循 Github Flow,虽然跟前面团队合作流程会有一点差别.在团队内部,大家都是 ...

随机推荐

  1. 我这.NET菜鸟,用它开发RabbitMQ消息队列后,竟被老板一夜提拔为架构师

    [讲故事] 自2022年末推出此工具以来,相关文章已被圈内顶尖的几家.NET头条号转载,而且短短数月,已有超100个团队/个人开发者使用它来操控RabbitMQ消息队列,反响可谓十分火爆.故本次经典重 ...

  2. Nginx02 Nginx的的目录结构、基本工作原理、基本配置文件介绍

    1 Nginx目录结构 1.1 简要介绍 [root@localhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp ...

  3. StartAllBack使用教程

    StartAllBack简介 StartAllBack是一款Win11开始菜单增强工具,为Windows11恢复经典样式的Windows7主题风格开始菜单和任务栏,功能包括:自定义开始菜单样式和操作, ...

  4. 我Alfred Workflow工具集合

    MyToolBox 我常用的工具箱,Alfred Workflow工具集合满足日常开发使用场景.不断完善和更新Alfred Workflow. 目前包含一下功能. 时间戳转换 unicode转中文 随 ...

  5. B端业务中仓库标签打印系统设计方案

    需求背景: 仓库在给客户货物打包途中需要在包裹上贴标签,在客户比较多且标签样式多样化的前提下,给仓库人员带来了工作量,为了节约仓库人员工作流程时间,公司开发了一套标签管理系统: 前提条件:选择专属打印 ...

  6. 益赛普等TNFi持续治疗强直性脊柱炎的长期疗效观察(≥3年)

    北大深圳医院风湿免疫科在2021年发表了益赛普等TNFi持续治疗强直性脊柱炎的长期(≥3年)疗效观察[1]. 入排条件严苛,坚持随访不容易 观察对象是2009-2019年间就诊于该科室的AS患者,需有 ...

  7. nvm作用、下载、使用、常见问题

    一.nvm是什么及作用 nvm全名node.js version management,同等于nodejs的版本管理工具.当不同项目使用不同版本nodejs且不统一时,这时就用到nvm进行不同项目不同 ...

  8. Word 设置页眉、页脚、页码

    页眉:在 Word 文档中,每个页面的顶部区域为页眉.常用于显示文档的附加信息,可以插入时间.图形.公司微标.文档标题.文件名或作者姓名等. 页脚:页脚与页眉的作用相同,都可以作为显示文档的附加信息, ...

  9. 通过 Pulsar 源码彻底解决重复消费问题

    背景 最近真是和 Pulsar 杠上了,业务团队反馈说是线上有个应用消息重复消费. 而且在测试环境是可以稳定复现的,根据经验来看一般能稳定复现的都比较好解决. 定位问题 接着便是定位问题了,根据之前的 ...

  10. ChatGPT强势爆红,背后的技术原理是?一文轻松搞懂!

    目录 什么是ChatGPT? OpenAI 背后的原理和发展历程 带来的争议和挑战 尾语 作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.源码解析.科技故事.项目 ...