使用DRF和flask写注册模块差异总结

不接受反驳 本人很菜。写总结只是为了增加经验!

先说说个人flask和django框架的使用感受

用flask写了用户模块第三方扩展自己找包

django则不同了。django真的太大了。。

你如果真的用django去开发一个中小型项目那你感觉真的是杀鸡用牛刀

不过我个人认为用flask写起来舒服很多 因为django你要考虑的因素太多太多了。比如python2只认识mysqldb 但python3 却使用 pymysql 你还需要给数据库改名 等等

有人说flask只适合开发中小型项目。。。 个人感觉不是。 我之前从网上搜过很多flask和django框架的区别。差异和喜欢程度,

为啥公司喜欢用django的多一点,因为django开发效率高啊。你flask疯狂找扩展时候。django估计都开始写了吧 再说效益都是钱啊!!!

再说django自带的站点也不错。 因为有人给他的站点做了二次开发啊

而flask则是。。大牛都喜欢用。我听他们说 flask开发真的很爽,(我还在疯狂的找扩展包)虽然不如django齐全但是flask开发程度大小是需求说了算的

可以很大也可以很小而且省去了很多砍框架的事情,用什么我装什么扩展包就是了。扩展包也一直在更新,很舒服

django则不同,目录不需要自己搭建 直接一个 django-admin startproject    子应用 python manage.py startapp 完事

说说18年新火的 django rest framework吧

这东西太强大了。 他不是框架 他是基于django实现的一个扩展包

封装程度极高

说实话第一次用这都写完注册页面了,我还是有点记不清 那几个APIViews 和VIEset

只知道写的时候看看 那个最合适那个最方便!!就继承那个class

这DRF重点就是理解 序列化和反序列化 我个人感觉理解了就算是入门了。

序列化 == 模型类> python字典>json

反序列化 == 前端发送数据 >经过serializer > python字典> 模型类

通俗说吧。 序列化 就是你写好的模型类 然后转成 字典然后json

反序列化就是接收前段数据经过校验 然后转成python的字典 你取的时候跟字典一样

而且返回也不是httpresponse了 是drf自带的response

Serializer(instance=None, data=empty, **kwarg)

说说模块部分吧 分为两个部分一个分为校验一个是用户模块这不正符合 mvt 设计模式嘛!使用数据库mysql nosql使用redis第一个API写的是返回图片验证码 使用的是最原生的APIView APIView和View不同之处APIView继承 django 原生view传入视图的request 不是django原生的HTTPrequest而且任何APIExcotion都会被捕捉如果你说mysql和redis异常怎么办, 自己写!!而且dispatch()之前 会自动校验身份 流量控制视图返回方法是 response 视图会为响应数据设置render符合前端要求协议
前端发来请求并在路径上生成uuid调用第三方库 生成验证码将image加上uuid 拼接为键 图片验证码为值存入redis数据库返回图片用的django原生的Httpresponse 记得设置类型  conttype=image/jpg#第二步写发送短信验证码使用GenericAPIView  Genercapiview 继承apiview 主要提供了序列化器和数据库查询方法最大特点是!!这哥们 可以配合五个类一起使用!!那五个类自己看文档吧。。第一步指定序列化器!序列化器里面是啥等会说第二步定义get属性接收手机号指定序列化器 验证序列化器 如果有异常抛异常生成图片验证码调用celery发送短信(celery做成一个独立文件。独立启动分离出来就能用那种。这么做解耦高。有益于日后拓展 而且他报错!!一般报错在你指定的redis数据库内!!)使用 redis管存储两个 一个以sms_+手机号为键 值为验证码 存储 一个以sms_flak手机号为键 值你随便 判断是否是60秒内频繁发送短信而且使用管道切记一定得提交!!!

说说验证器都发生了什么吧首先校验 uuid 是否是uuid 类型然后校验前端传来的短信码是否是你存储的位数定义校验的字段:字段的名字要么和模型类属性名相同,要么和传入的校验参数胡名字相同(千万别皮)然后联合校验短信验证码需要用到uuid 所以uuid也传过来。 因为储存时候是用到了uuid取出redis存储的真是验证码 哦对了。由于drf他不捕获数据库异常所以自定义异常除了mysql 连redis也写了所以要踹一脚取出之后第一件事就是把储存在redis数据库的真实短信验证码给删了!!防止暴力撞库需要注意的一点就是 py3里面redis取出来的需要encode一下然后为了我们伟大的用户体验好一点还是给转成小写在比较吧。然后从 self.context[‘view‘].kwargs[‘moble‘]取出手机号去redis数据库查一下如果有就给他一个发送短信频繁因为如果你是第一次注册redis数据库里肯定没有sms_flask手机号因为你第一次来发送短信肯定flask+sms是空的发短信总体流程是!首先接收请求~!然后 调到serializer里去校验各个参数然后 执行视图函数 返回 发送短信ok~

注册页面注册页面是在用户模块里写的使用的是createAPIVIEW啥都不用做就指定序列化器就完事为啥? 有时间的话打开createapiview一看源码就知道了。重点就在序列化验证器里面序列化验证器使用的是serializer.ModelSerializer他和serializer.serializer的区别是他提供自动校验模型类参数自动为Serializer生成validators,比如unique_together但是!你需要指定而外字段为啥?你数据库字段里有 同意 和passwordtwo 短信验证码等等嘛这里你需要注意的那些字段你是用来输入的(write_only)那些字段你是用来输出的(read_only)你输入的password是write_only把不能输出吧你手机号 用户名是read_only把而且你需要追加校验额外字段我记得没错的话他自己提供的校验用户名没有min_length
max_length是150字节疯了吧!校验密码长度(你自己咋定义规则怎么校验)正则手机号等等然后重写了 create方法 因为用jwt做了状态保持

登录模块等我有时间了在写


原文地址:https://www.cnblogs.com/famousday/p/9348807.html

时间: 2024-08-03 10:54:15

使用DRF和flask写注册模块差异总结的相关文章

PHP+jQuery 注册模块的改进之二

接<PHP+jQuery 注册模块的改进之一>继续修改: ①在注册成功后返回登录邮件页面( maillogin.php ),在页面中用户可以点击链接跳转到自己注册邮箱的登录页面,可以再次发送激活链接: ②给激活链接设置有效期,过了有效期点击激活连接,会跳转页面让用户选择再次发送邮件或者返回注册页:再次发送邮件后,进邮箱点击链接激活: ③点击重新发送激活连接,不跳转页面,在当前页无刷新弹出通知:已重新发送链接,几秒钟之后通知消失: ④点击更换收件邮箱,跳转至注册页 1.点击邮箱链接跳转至相应邮箱

PHP+jQuery 简单注册模块

/* ******* 环境: Apache2.2.8 + PHP5.2.6 + MySQL5.0.51b + jQuery-1.8.3.min.js ************** 其他组件:Zend_mail( Zend_framework 1.11.11 )******* Date:2014-09-25******* Author:小dee******* Blog:http://www.cnblogs.com/dee0912/*/ 写了一个简单的PHP+jQuery注册模块,需要填写的栏目包括

百思不得姐之立即登录注册模块(五)

一 功能图和实现思路 具体功能图: 实现思路: --> 1 关注控制器模块搭建(xib) --> 2 登录和注册界面的总体模块数量(三个模块),可以用三个view来装各自的子控件 --> 2.2 先做上面的view->中间的view->底部的view(顺序自定) --> 2.3 创建两个xib,用同一个类来管理两个xib --> 2.4 将中间的view的宽度改为屏幕的两倍 --> 2.5 用拖线的方式修改约束,达到app的整体效果 二 关注控制器模块搭建

WinForm应用程序之注册模块的设计与实现

Posted on 2012-11-13 10:21 星星之火116 阅读(3260) 评论(4) 编辑 收藏 我们在安装一些桌面应用程序的时候,往往在会有提示当前用户使用的是试用版,要进行注册.刚好最近做了一个关于应用程序注册的小demo(这里只是一个思路),在这里和大家分享一下. 项目的要求是这样的: 1. 能获取主机硬盘序列号.网卡MAC地址.CPU编号,并按照一定的算法由此生成机器码 2. 能根据机器码按照一定的算法生成注册码 3. 未注册时,不能使用会员管理功能 好的废话不多说,马上进

Java入门:用户登录与注册模块1(实践项目)——分析

任务描述:用户登录与注册是大多数软件都拥有的一个模块.请编写一个控制台程序,实现用户的登录与注册功能,并且用户能够修改自己信息. [需求分析]由于本程序是一个演示程序,用户的信息我们做简化处理,仅包括:用户名.密码和EMAIL. 1.系统功能分析 分析一个系统或一个模块,我们首先需要了解系统需要实现哪些功能,通常可采用用例图来描述分析结果.对于本任务,用例图为: 对于每个用例,可以使用用例描述表来详细阐述用例内容.用户登录注册模块的三个用例描述表如下: (1)登录用例描述表 用例名称 登录 标识

让程序出现在控制面板(写注册表)

1.主要是写注册表,在HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall这个下面建立一个键值,一般都是一个唯的GUID 2.然后在GUID键值下面,创建许多子键值. 示例代码: 假设m_strInstallPath="C:\\Program files\\App"; QSettings *reg = new QSettings("HKEY_LOCAL_MACHINE\\SOFT

登录及注册模块设置与流程图

原文地址:http://www.cocoachina.com/design/20170320/18918.html 一.登录/注册模块流程图 1.电商&O2O类产品下单注册逻辑 2.类似于简书&知乎等内容型社区产品 二.关于注册流程 1.同一页面中完成注册 较适合填写信息较少(往往不包含关于用户个人信息的设置),注册流程简洁的产品,这类产品的注册所需的信息往往只包含:手机号.验证码.密码等最简单的信息. 在同一页面中完成注册,能够能够让用户对整个注册流程有个心理预期,对填写的信息能够进行预

Windows下通过写注册表的方式实现程序开机自启动

程序可以读取同目录下的config.ini文件中的配置来实现开机自启动. config.ini文件地格式实例如下: [Main] KeyName = test ProcessPath = D:\bin\test.exe 其中KeyName字段为写入注册表的表项名称(可以设置为程序名) ProcessPath为程序的完整路径 程序的完整源代码如下. regedit函数实现注册表写入,autopen实现开机自启动. 编译后的程序在此下载:程序下载 #include <stdio.h> #inclu

VB6之写注册表

难免会遇到写注册表的情况,写了个实用点的RegWrite函数.为了减少代码量,用WScript.Shell取代了API来实现. 使用方式就在注释中了,就不再过多解释了.PS:注释比实现代码要丰富多了,m(-.-)m 代码: Private Function RegWrite(ByVal name_ As String, Optional value_ As String, Optional type_ As String = "REG_SZ") As Integer '@Author: