Django REST Framework

Django Rest framework 之 节流

元气小坏坏 提交于 2021-02-18 18:31:22
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) django rest framework 之 版本(四) django rest framework 之 解析器(五) django rest framework 之 序列化(六) django rest framework 之 分页(七) django rest framework 之 视图(八) 一、节流 1、简介 节流又叫限流,限制访问。就是通常一个用户在多次请求一个页面,或者点击一个链接的时候,前几次点击是没有问题的,但是一旦连续几次之后,就会出现 访问受限,离下一次访问还有50秒 等的字样,在<code>django rest framework</code> 中有一个专门的组件来做限制访问。 2、思路 一旦一个用户向资源发送请求,那么根据用户的身份就有两种情况,匿名用户和认证用户。那么根据用户的身份怎么做限制访问?就是要找到用户的唯一标识。 匿名用户:对于匿名用户,唯一能用来标识的只有 请求的IP 。 认证用户:认证用户的用户名,或者用户ID等。 用户标识的问题解决了,假设设置的是每分钟只能访问5次,也就是5次/min。当用户发送请求,可以拿到用户的唯一标识

Django REST framework

我与影子孤独终老i 提交于 2021-02-18 08:24:03
[TOC] Django REST framework 权限和限制 (你能干什么) 与身份验证和限制一起,权限确定是应该授予还是拒绝访问请求。 在允许任何其他代码继续之前,权限检查始终在视图的最开始运行。权限检查通常使用 request.user 和 request.auth 属性中的身份验证信息来确定是否应允许传入请求。 权限用于授予或拒绝不同类别的用户访问API的不同部分。 最简单的权限类型是允许访问任何经过身份验证的用户,并拒绝访问任何未经身份验证的用户。这对应 IsAuthenticated 于REST框架中的类。 稍微不那么严格的权限样式是允许对经过身份验证的用户进行完全访问,但允许对未经身份验证的用户进行只读访问。这对应 IsAuthenticatedOrReadOnly 于REST框架中的类。 设置权限的方法 可以使用该 DEFAULT_PERMISSION_CLASSES 设置全局设置默认权限策略。例如: REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ) } 如果未指定,则此设置默认允许不受限制的访问: 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions

django-rest-swagger对API接口注释

与世无争的帅哥 提交于 2021-02-13 03:51:29
Swagger是一个API开发者的工具框架,用于生成、描述、调用和可视化RESTful风格的Web服务。总体目标是使客户端和文件系统服务器以同样的速度来更新,方法,参数和模型紧密集成到服务器端的代码中,允许API始终保持同步。 在使用 django-rest-framework 进行API开发,可以使用django-rest-swagger接入swagger自动生成接口文档。 1. 安装django-rest-swagger pip install django-rest-swagger 2.配置settings.py INSTALLED_APPS = [ ... ' rest_framework_swagger ' ... ] 3. views.py 该博文的项目是django-rest-framework中文站点的例子: https://q1mi.github.io/Django-REST-framework-documentation 当需要对接口的各种方法进行注释时,直接在该类下添加注释,如下所示。需要注意是的:注释的方法名称(如 get、post)要对应该类所含的方法名称 class SnippetList(generics.ListCreateAPIView): """ get: Return all snippets. post: Create a new

Django Rest Framework 序列化(下)

大憨熊 提交于 2021-02-09 09:05:04
Django Rest Framework 序列化(中) 一、使用 ModelSerializer 组件 ① 包装 Serializer ModelSerializer 与 Serializer 区别在于 :ModelSerializer 支持了 Serializer 中所有的操作,并且通过 自动生成所有数据字段与序列化类的一一对应关系 。而不用手动添加。即 Serializer 是 ModelSerializer 的父类,所以 ModelSerializer 才会支持 Serializer 的所有操作。 ② ModelSerializer 深度控制 在上面,看到在进行联表查询的时候,只能获取到外键关联对象,在当前表中存储的 id,怎样拿到外键关联对象的具体信息。 注:这里的 depth 就表示深度查询的层数 ,默认的层数为0, 层数越多查询效率越慢 。 ③ 自动生成链接 在返回组 group 的时候是返回该组的 id,或者用 depth 深度控制,返回组的详情信息。在 restful 规范中,规定应该给出相应的详情链接,可以通过 url 拼接,在 django rest framework 中也有相对应的实现。 改写用户信息序列化类,使之能够提供用户组详情的有关 url # view_name 参数 进行传参的时候是参考路由匹配中的 name 与 namespace 参数 #

django Rest Framework----GenericAPIView 通用视图 GenericAPIView源码分析

吃可爱长大的小学妹 提交于 2021-02-08 14:49:54
一、GenericAPIView GenericAPIView扩展了APIView,为标准列表和详细视图添加了常见的行为。 提供的每个具体通用视图都是 一个 GenericAPIView 或多个mixin类 组合在一起而构建的。 例如: BookView视图类继承自: ListModelMixin:用于显示所有图书 CreateModelMixin:添加一本书 GenricAPIView:继承自APIView,提供as_view()等,获取当前视图类中queryset和serializer_class ,用于给ListModelMixin和CreateModelMixin使用。 class BookView( mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView ): queryset = models.Book.objects.all() serializer_class = BookModelSerializer def get(self,request, *args, ** kwargs): return self.list(request, *args, ** kwargs) def post(self,request,*args,** kwargs): return self

平台项目~ 数据库平台建设-简介

此生再无相见时 提交于 2021-02-05 10:04:54
一 前沿简介 如何一步步构建自己的数据库平台 二 技术介绍 后端语言 python 后端框架 django-rest-framework 前端动态 vue+vuex+axios 前端ui element ui 前端ui框架 vue-admin 三 开发工具 我推荐pycharm 很经典的开发IDE工具,可以同时进行drf和vue框架开发 四 前后端分离框架 优点 现在流行的python框架都已经在遵循前后端分离策略,这样能更好的让前端研发帮你拓展功能 能降低学习成本,更好的分离业务逻辑 缺点 任何关于安全或者逻辑的判断可能都需要前后端都做,防止出现安全问题,我列了以下几点 1 认证登录 2 权限菜单 3 传递数据的有效值判定等 五 开发流程 1 后端python构建 api接口 2 采用postman测试api接口调用 3 前端vue构建 4 前后端进行数据交互 六 关键点注意 1 在开发一个功能模块前一定要设计完整的流程,比如数据库查询模块,考虑各种情况和限制,设计出完善的功能流程,在后期能避免开发的低效率问题 2 前后端数据交互制定一个标准的数据格式,通用在各个功能模块,形成统一的标准 3 项目前期以实现功能项目为主,不要怕代码繁琐重复,后期经验丰富了再来精简代码,封装模块组件 4 多多和研发人员和其他同行进行交流,参与平台测试.不断的改进功能设计,能帮你构建一个更加健壮的平台

引爆潮流技术 Vue+Django REST framework打造生鲜电商项目

谁说胖子不能爱 提交于 2021-02-04 08:22:04
引爆潮流技术 Vue+Django REST framework打造生鲜电商项目 下载地址: 百度云盘 采用当前流行的前后端分离式开发技术,涉及RESTFul API基础知识和Vue项目结构分析,解决了技术开发单一的痛点,拥有超前的技术融合技能,让你在开发的领域比别人技高一筹! 学前必看 如果你还对Django框架不了解,强烈推荐从已上线实战课程《强力Django+杀手级xadmin开发在线教育网站》学起 技术储备要求 课程重点讲解RESTFul API知识,主要面向后端开发者,为了补充后端同学对前端Vue认知不足,本课程特意简单的讲解了Vue前端项目的结构以及如何调试每个API接口数据 掌握Python语法丨掌握Django框架丨了解Vue 丨MySQL基础 #include <stdio.h> #include <stdlib.h> #include <string.h>/* 包含了运用字符串函数的所需的原型和声明,便于程序执行错误检查 */ #include <math.h> typedef struct { int len; int len1; char data[0];//不占用内存空间,会在后面连续的分配一块内存空间运用,和指针区别开来 }SS1; typedef struct { int len; int len1; int data[1];//占用内存空间

Django Rest framework 之 序列化

▼魔方 西西 提交于 2021-01-23 04:53:12
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) django rest framework 之 版本(四) django rest framework 之 解析器(五) django rest framework 之 序列化(六) django rest framework 之 分页(七) django rest framework 之 视图(八) 一、前言 先建立数据库,并添加相应的数据,用来后面序列化使用 1、建立数据库模型 为数据建立相应的数据库模型,并且有一对一,多对多,外键关联。 from django.db import models class UserGroup(models.Model): title = models.CharField(max_length=32) class UserInfo(models.Model): user_type_choices = ( (1,'普通用户'), (2,'VIP'), (3,'SVIP'), ) user_type = models.IntegerField(choices=user_type_choices) username = models.CharField

JWT验证机制【刘新宇】【Django REST framework中使用JWT】

老子叫甜甜 提交于 2020-12-22 07:46:20
JWT 在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证。我们不再使用Session认证机制,而使用Json Web Token认证机制。 什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准( (RFC 7519 ).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。 起源 说起JWT,我们应该来谈一谈基于token的认证和传统的session认证的区别。 传统的session认证 我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再一次进行用户认证才行,因为根据http协议,我们并不能知道是哪个用户发出的请求,所以为了让我们的应用能识别是哪个用户发出的请求,我们只能在服务器存储一份用户登录的信息,这份登录信息会在响应时传递给浏览器,告诉其保存为cookie,以便下次请求时发送给我们的应用,这样我们的应用就能识别请求来自哪个用户了,这就是传统的基于session认证。

Day 28 JWT认证相关

耗尽温柔 提交于 2020-11-20 16:11:25
Day 28 JWT认证相关 一、JWT 在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证,我们不再shiyongsession认证机制,而使用Json Web Token认证机制。 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。 基于token的鉴权机制 基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。 流程上是这样的: 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给用户一个token 客户端存储token,并在每次请求时附送上这个token值 服务端验证token值,并返回数据 这个token必须要在每次请求时传递给服务端,它应该保存在请求头里, 另外,服务端要支持 CORS(跨来源资源共享) 策略