首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django REST framework 来实现一次性验证码(OTP)

OTP 避免了一些静态密码认证相关系缺点,不容易受到重放攻击,比如常见注册场景,用户邮箱短信会收到一条一次性激活链接,或者收到一次随机验证码(只能使用一次),从而验证了邮箱手机号有效性。...今天讲一下如何Django REST framework[1](DRF) 来实现 OTP,阅读本文需要一定 DRF 基础知识。...}, write_only=True) # 利用drfvalidators验证username是否唯一 username = serializers.CharField(required...最后的话 一次性验证码(OTP)逻辑简单,需要思考如何DRF 框架填空,填在哪里?...这其实需要了解 DRF ModelSerializer 类和 ViewSet 类之前关系,在调用关系上,ViewSet 类调用 ModelSerializer 来实现字段验证和数据保存及序列化,

1.7K20

django restframework serializer 增加自定义字段操作

在使用django restframework serializer 序列化在django定义model时,有时候我们需要额外在serializer增加一些model没有的字段。...当不指定其method_name时,默认为get_field_name 如果使用ModelSerializer并指定字段时,要包含此时定义字段 补充知识:django restframework Serializer...它通过调用它所连接序列化类方法来获得它。它可用于将任何类型数据添加到对象序列化表示。...:我们提交表单数据存在于多表(因为表中含有多对多字段),如何验证所有字段,并保存完整数据到各表。...对象上,当createupdate时候就会被添加进数据库,相当于validated_data.update(kwargs) 实际源码不是这样子,但也就是这么个意思。

3.6K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django REST Framework-什么是序列化器(二)

    除了将Django模型序列化为JSON格式外,序列化器还可以将其序列化为其他格式,例如XMLYAML。我们只需要更改序列化器类父类,以便它可以处理特定格式数据。序列化器还可以用于验证输入数据。...我们指定了要包含在序列化器字段以及每个字段属性。我们还指定了密码字段write_only属性,这意味着在反序列化期间它将不会被返回。...总结序列化器是DRF一个核心概念,它允许我们将Django模型转换为序列化格式,并反之亦然。...使用序列化器,我们可以将Django模型序列化为JSON、XMLYAML格式,以便我们可以将其发送到前端应用程序。序列化器还可以帮助我们验证输入数据,并确保数据有效性。...在DRF,我们使用SerializerModelSerializer类来定义序列化器,具体取决于我们是否要序列化Django模型。序列化器还可以用于验证输入数据,并将其转换为Django模型。

    65830

    django 自带 user 字段扩展及头像上传

    同时生成 user 表和 user_profile 表 这个方法虽然是官方推荐,但是个人还是觉得很麻烦,获取 profile 字段还需要通过 user 表外键获取 profile 实例,然后再获取字段...[your_user_model_name]' # 例如我这边设置为 'expert.User' 在 admin ,我们按照之前方法照常设置就行 这种方法,需要在我们做数据库迁移之前,先定义好我们自己...这种方法适合只需要扩展 User Model 字段,会继承之前 AbstractUser 全部字段,系统自带 User 也是通过继承 AbstractUser 来实现 # 系统 User 源码... username 和 is_staff 字段,直接通过 email 作为用户名 class User(AbstractUser, PermissionsMixin): email = models.EmailField...3 补充一下 之前在讨论群(在公众号后台回复“django”,获取入群方式),有个老铁问如何通过存在数据库反向生成 model,因为比较简单,所以这边记顺带录下。

    2.1K30

    DjangoRestFramework,序列化组件、视图组件

    1.read_only read_only=True表示字段为只读字段,即对应字段只用于序列化时(输出),而在反序列化时(创建对象)不使用字段。默认为False。...2.write_only write_only=True表示字段为只写字段,和read_only相反,即对应字段只用于更新创建新Model时,而在序列化时不使用,即不会输出给用户。...需要注意,如果字段设置了default,则隐式地表示字段已包含required=False,如果同时指定default和required,则会抛出异常。...10.help_text 一个文本字串,可用作HTML表单字段其他描述性元素字段描述。...字段给这) 设置字段 类似default 通常这个有外键关联属性可以用source设置 13.validators 验证字段跟 单独validate很像 UniqueValidator

    2.6K20

    Flask框架在Python面试应用与实战

    一、常见面试问题核心组件与工作流程视图(Views):解释视图在DRF作用,介绍基于类视图(ViewSet、GenericViewSet)与视图集(ViewSets)概念,以及如何关联到URL。...认证(Authentication):介绍DRF支持多种认证方式(如Token、Session、OAuth等),以及如何配置全局视图级别的认证。...过滤(Filtering):介绍使用django-filter库内置filterset_fields实现资源过滤。排序(Sorting):讲解如何启用排序功能,允许客户端通过查询参数指定排序字段。...二、易错点与避免策略序列化器验证遗漏:确保在序列化器充分定义验证规则,使用validate_方法对关联字段、自定义逻辑进行验证,防止脏数据进入数据库。...对于复杂查询,考虑使用Django ORM查询优化技巧添加数据库索引。

    12210

    Django+Vue开发生鲜电商平台之7.用户登录和注册功能

    一、DRFtoken基本使用 1.DRFtoken登录原理 基于DRF前后端分离登录与单独使用Django登录原理不同,不再需要CSRF验证DRF提供了许多开箱即用身份验证方案,并且还允许实现自定义方案...身份验证方案始终定义为类列表,DRF框架尝试对列表每个类进行身份验证,并使用成功进行身份验证第一个类返回设置request.user和request.auth。...2.DRF实现发送短信验证码接口 需要在DRF接入短信验证码发送。...显然,对于多个字段验证,如果某一个字段验证失败,则提示字段错误信息,如果多个字段验证失败,则将这些字段错误信息都显示出来。...字段,但是在validate(attrs)又将其删去,导致在序列化时找不到code字段,因此出错,这是需要将字段write_only设置True,以确保在更新创建实例时可以使用字段,但是在序列化表示形式时不包括字段

    4.4K20

    安装 Django REST Framework

    安装Django REST Framework(以下简称DRF)非常简单。您只需按照以下步骤操作:创建一个新Django项目使用现有的Django项目。在命令行中使用pip命令安装DRF。...它们负责将Django模型转换为JSON、XML其他格式数据,并反之亦然。...我们指定了User模型作为序列化器元数据,并指定了我们想要在JSON包含字段。创建视图视图是DRF另一个核心概念。它们定义了API行为,即如何响应请求、如何验证输入等。...我们指定了我们想要返回所有用户查询集,并指定了用于序列化数据序列化器。创建路由路由是将URL映射到视图一种机制。在DRF,我们可以使用DjangoURLConf和DRF路由器来定义路由。...DRF有很多其他功能,例如身份验证、权限管理、限速、过滤、分页等等。您可以在DRF官方文档中找到所有这些功能详细信息。

    1.5K20

    Python3+ Django3:自动生成Swagger接口文档

    这也造成了很多读者误认为Swagger只是Java语言下一个框架,其实并不是的,Swagger除了能应用在Java语言工程,也同时适用于在其它语言下,比如Python。...接下来,在本篇文章,介绍就是基于Python3+Django3下,如何接入Swagger框架,并且实现Swagger接口文档自动生成。 2....在django 3.0已经不支持库了,取而代之是全新第三方drf-yasg库。...创建新组(增) delete: 删除现有的一组(删) partial_update: 更新现有组一个多个字段...5、在Swagger还可以查看到在model定义字段类型及参数说明。 ? 到此,我们Django3接入Swagger已经完成了,更多swagger功能使用请读者自行尝试。

    15.5K32

    Django(60)Django内置User模型源码分析及自定义User

    User模型源码分析 class User(AbstractUser): """ Django 身份验证系统用户由模型表示 需要用户名和密码。...对于一些想要删除账号数据,我们设置这个为False就可以了,而不是真正从数据库删除。 is_superuser:是否是超级管理员。如果是超级管理员,那么拥有整个网站所有权限。...Django验证系统已经帮我们实现了登录验证功能。...但是有时候还是不能满足我们需求。比如在验证用户登录时候,他用是用户名作为验证,而我们有时候需要通过手机号码或者邮箱来进行验证。还有比如我们想要增加一些新字段。...,不再需要username字段来校验了,接下来我们验证一下登录,现在结构需要用phone字段和密码来登录,而不是使用username,我们编写视图函数来尝试 def index(request):

    1.7K20

    重点内容回顾-DRF

    MySQL数据库修改表数据: update 表名 set 字段名=要改 [where 查询指定数据条件] update tb_users set email_active=0 where id...,我们还可以补充额外验证: a.先写一个函数(如about_django)封装补充验证功能,然后在字段添加 validators参数,如下: btitle = serializers.CharField...,validators=[about_django]) b.在序列化器定义一个方法 validate_,来对 字段进行验证。...return value c.在序列化器定义 validate方法进行补充验证(结合多个字段内容验证) def validate(self, attrs): # 此处attrs是一个字典类型数据...团队开发注意事项 浅谈密码加密 Django框架英文单词 Django数据库相关操作 DRF框架英文单词

    2.4K20

    Django内置通用类视图及实例

    方法: get_queryset():获取此视图对象列表.必须是迭代或者可以使查询集.默认返回queryset属性.可以通过重写方法实现动态过滤.让这种方式能够工作关键点,在于当类视图被调用时...参数,如果找到了这个参数,方法使用这个参数执行一个基于逐渐查询.如果这个参数没有找到,方法查找slug_url_kwarg参数,使用slug_field字段执行针对slug查询.当query_pk_and_slug...方法: get_success_url():决定在表单成功验证后重定向到URL,默认返回success_url. form_valid(form):在表单验证成功后调用方法(注意并没有对数据进行操作...,并重定向到get_success_url(),可以覆盖方法在以上行为之间添加额外动作.方法必须返回一个HttpResponse. form_invalid(form):如果表单验证失败,则使用已填充表单数据和错误信息重新渲染上下文...这种方式一般用于form需要更加精准样式时候,逐个元素逐个元素编排到html。 完成后可在页面上新增修改项目信息。

    2.9K40

    drf之认证、权限、频率

    其中方法必须重写,如不重写其中没有认证逻辑,则直接抛出异常。 为方便管理,认证类写在新建.py文件。...2.3 drf内置权限类 drf为我们内置了几个权限类,当我们需求类似时,可以直接使用其内置权限类,避免代码冗余。...这几个权限类依次是 IsAdminUser 校验Django自带用户表is_staff字段,判断认证用户是否是管理员(注意:其判断不是is_superuser字段,而是is_staff,即该用户是职员状态是就可以通过权限认证...,必须在频率类属性进行赋值,且与sttings要一一对应。...如果登录用户经过了认证,则限制依据是该用户user_id,否则就是请求ip地址。settingscope为user 。

    92641

    Python进阶40-drf框架(二)

    去处理 # 2)判断处理结果(返回)response,有代表drf已经处理了,None代表需要自己处理 # 自定义异常处理文件exception,在文件书写exception_handler函数...sex为选填字段 # 五个字段都必须提供完成校验规则 # 局部钩子:validate_要校验字段名(self, 当前要校验字段) # 校验规则:校验通过返回原值,校验失败...可以将取出校验 # # 3)为有联合关系字段们提供全局钩子函数,如果某些字段不入库,可以将取出校验 # # 4)重写create方法,完成校验通过数据入库工作,得到新增对象...字段,不需要返回就不用设置了 2)设置方法字段字段名可以随意,字段有 get_字段名 提供,来完成一些需要处理在返回数据 view: 1)从数据库中将要序列化给前台...,设置校验规则 2)为需要额外校验字段提供局部钩子函数,如果字段不入库,且不参与全局钩子校验,可以将取出校验 3)为有联合关系字段们提供全局钩子函数,如果某些字段不入库

    2K20

    【玩转腾讯云】django 开发Bug追踪平台之用户注册篇(基于腾讯云短信 & redis)

    方便我们以后使用离线文件可以自己去官网下载,也可以拿我这里已经下载好,我将其放在网盘,需要自行下载,其中包含: js、bootstrap、font-awesome【图标】 链接:https://pan.baidu.com...但是,对于添加 form-control 属性,之后代码其他字段都要用到,每次使用for 循环添加很显然有些赘余,我们可以将其封装在一个类,这样,需要添加样式时候直接继承这个类就可以了。...// Django ModelForm 默认生成字段ID为 “id_ + 字段名” var mobilePhone = $('#id_mobile_phone').val...,我们应该将其放置在 local_settings.py 文件( local_settings.py 文件作用,我在上一篇文章中提到过),同时要在 settings.py 文件声明import os...redis数据库,且超时时间为 60s【即60s后自动消失】,这样我们在提交表单时候,就可以将用户输入验证码同redis进行比较,且如果时间超过 60s,用户就要重新获取验证码 - redis

    26.9K88

    Django内置通用类视图CBV及示例

    方法: get_queryset():获取此视图对象列表.必须是迭代或者可以使查询集.默认返回queryset属性.可以通过重写方法实现动态过滤.让这种方式能够工作关键点,在于当类视图被调用时...参数,如果找到了这个参数,方法使用这个参数执行一个基于逐渐查询.如果这个参数没有找到,方法查找slug_url_kwarg参数,使用slug_field字段执行针对slug查询.当query_pk_and_slug...方法: get_success_url():决定在表单成功验证后重定向到URL,默认返回success_url. form_valid(form):在表单验证成功后调用方法(注意并没有对数据进行操作...,并重定向到get_success_url(),可以覆盖方法在以上行为之间添加额外动作.方法必须返回一个HttpResponse. form_invalid(form):如果表单验证失败,则使用已填充表单数据和错误信息重新渲染上下文...这种方式一般用于form需要更加精准样式时候,逐个元素逐个元素编排到html。 完成后可在页面上新增修改项目信息。

    3.2K10

    Django开发常用30个软件包

    这个应用支持多种认证体系,比如用户名电子邮件。一旦用户注册成功,它还可以提供从无需认证到电子邮件认证多种账户验证策略。同时,它也支持多种社交账户和电子邮件账户。...Celery 用来管理异步、分布式消息作业队列,可用于生产系统来处理百万级别的任务。 django-celery是django web开发执行异步任务定时任务最佳选择。...Django REST 框架 构建REST API优秀框架,管理内容协商、序列化、分页等,开发者可以在浏览器浏览构建API。  ...pip install django_compressor 13. Reversion 为模型提供版本控制功能,稍微配置后,就可以恢复已经删除模型回滚到模型历史任何一点。.../django-notifications-hq/ 27.django-simple-captcha 简介:配合 django 表单模块,方便地为表单添加一个验证字段

    3.3K20
    领券