Django REST Framework

rest_framework之status HTTP状态码

淺唱寂寞╮ 提交于 2020-04-22 04:03:51
Django Rest Framework有一个status.py的文件 通常在我们Django视图(views)中,HTTP状态码使用的是纯数字,像400,404,200,304等,并不是那么很好理解这些数字的含义,而且如果错误代码出错,很容易被忽略;但是在rest_framework中,REST框架为status模块中的每个状态码提供了更明晰的标识符。使用它们来代替纯数字的HTTP状态码是一个很不错的选择。 状态码的使用通常与rest_framework中的Response一块,我们先看看Response的语法定义: class Response(SimpleTemplateResponse): """ An HttpResponse that allows its data to be rendered into arbitrary media types. """ def __init__(self, data=None, status=None, template_name=None, headers=None, exception=False, content_type=None): """ Alters the init arguments slightly. For example, drop 'template_name', and instead use

Django Rest framework 之 权限

主宰稳场 提交于 2020-04-19 05:13:43
django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) django rest framework 之 版本(四) django rest framework 之 解析器(五) django rest framework 之 序列化(六) django rest framework 之 分页(七) django rest framework 之 视图(八) 一、权限实例 在阅读本文之前请先参考 django rest framework 之 认证 中关于<code>django rest framework</code>的相关内容及实例 1、目录结构 为了更好的管理各个功能组件,在 django rest framework 之 认证 中我们说到可以将认证类单独的拿出来,放到其他目录下,然后导入到<code>views.py </code>文件中,在权限环节我们亦可以这么做,目录结构就变成这样 在api这个app下创建一个utils包专门用来存放相关的组件。 2、为模型类添加认证字段 我们在models.py中定义了两个模型类,分别是 from django.db import models class UserInfo(models.Model): USER

DRF Django REST framework 之 APIView(一)

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-19 05:12:02
什么是REST? REST是一个 标准,一种规范 ,遵循REST风格可以使开发的接口通用,便于调用者理解接口的作用。 使url更容易理解,让增删改清晰易懂,在前后端分离开发中按照这一规范能加快开发效率,减少不必要的讨论时间。 GET: 获取特定资源(通过ID)或资源集合 POST:   创建一个新资源 PUT: 更新特定资源(通过ID) DELETE: 按ID删除特定资源 详情可见: https://baike.baidu.com/item/rest/6330506 可以理解为: URL唯一代表资源,HTTP请求方式来区分用户行为。 URL的设计规范: GET: 127.0.0.1:9001/books/ 获取所有数据 GET:    127.0.0.1:9001/books/{id} 获取单条数据 POST: 127.0.0.1:9001/books/    增加数据 DELETE: 127.0.0.1:9001/books/{id} 删除数据 PUT: 127.0.0.1:9001/books/{id} 修改数据 数据响应规范: GET: 127.0.0.1:9001/books/    返回[{}, {}, {}] GET: 127.0.0.1:9001/books/{id} {} 单条数据 POST: 127.0.0.1:9001/books/    {} 添加成功的数据

Django Rest framework 之 解析器

折月煮酒 提交于 2020-04-19 05:10:58
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 之 视图(八) 一、前言 在前端向后台发送form表单或者ajax数据的时候,django的content_type会拿到请求头中的Content-Type属性然后根据值进行解析。 将request.data中的值放到request.POST中需要满足两个条件 请求头要求: Content-Type: application/x-www-form-urlencoded PS: 如果请求头中的 Content-Type: application/x-www-form-urlencoded,request.POST中才有值(去request.body中解析数据)。 数据格式要求: name=weilan&age=18&gender=男 1、表单提交 form表单提交时会自动的将请求头中的Content

Django-REST-Framework JWT 实现SSO认证(下)

匆匆过客 提交于 2020-04-18 07:42:17
在上一篇博客中,我已经对JSON Web 认证做了简单的解释,这篇博客是续篇,若不了解,请看上一篇博客: https://www.cnblogs.com/yushenglin/p/10863184.html 一.安装djangorestframwork-jwt 二.用法 在你的 settings.py ,添加 JSONWebTokenAuthentication 到Django REST框架 DEFAULT_AUTHENTICATION_CLASSES 。 在您 urls.py 添加以下URL路由以启用通过POST获取令牌包括用户的用户名和密码。 如果您使用用户名 admin 和密码 password123 创建了用户,则可以通过在终端中执行以下操作来轻松测试端点是否正常工作 。 或者,您可以使用Django REST框架支持的所有内容类型来获取身份验证令牌。 例如: 现在,为了访问受保护的API,您必须包含 Authorization: JWT <your_token> 标题。 刷新令牌 如果 JWT_ALLOW_REFRESH 为True, 则可以“刷新” 未过期的 令牌以获得具有更新到期时间的全新令牌。 添加这样的URL模式: 将现有令牌传递给刷新端点,如下所示: {"token": EXISTING_TOKEN} 。 请注意,只有非过期的令牌才有效。

Django-rest-framework(七)swagger使用

青春壹個敷衍的年華 提交于 2020-04-17 14:31:39
【推荐阅读】微服务还能火多久?>>> 在我们接口开发完之后,需要交付给别人对接,在没有使用swagger的时候,我们需要单独编写一份api接口文档,由postman之类的工具进行请求得到返回的结果。而有了swagger之后,可以通过提取接口代码中的注释来生成文档,并且可以直接在浏览器中调用,获取返回结果。先看下效果 安装 pip install django-rest-swagger setting.py 文件中添加 INSTALLED_APPS = [ ... 'rest_framework_swagger', ... ] 配置 在settings.py中可以添加修改swagger相关的配置 SWAGGER_SETTINGS = { # 这里可以用获取到的token来登录 'SECURITY_DEFINITIONS': { 'api_key':{ 'type': 'apiKey', 'in':'query', # token位置在url中 'name':'token' # 验权的字段 } }, 'USE_SESSION_AUTH': False, 'JSON_EDITOR': False, # False,用户可以自己编辑格式,不用按照serializers中的数据添加。True,会有多个输入框,输入serializer对应的字段的值 } urls.py 中添加一下代码 from

人生苦短,我用python(目录)

↘锁芯ラ 提交于 2020-04-15 14:55:09
【推荐阅读】微服务还能火多久?>>> 基础 简介 数据类型 文件操作 迭代器和生成器 函数 内置函数 常用模块 面向对象编程 异常处理 socket网络编程 线程 进程/协程/异步I/O 进阶 魔法函数 深入类和对象 元类编程 自定义序列类 多线程、多进程和线程池编程 python3实用编程技巧进阶(一) python3实用编程技巧进阶(二) python3实用编程技巧进阶(三) python3实用编程技巧进阶(四) python3实用编程技巧进阶(五) 数据库 Mysql(一) Mysql(二) Mysql(三) Memcached redis 前端 HTML CSS Javascript DOM Jquery Jquery实例 Vue基础 Django 基础 路由规则 Model 模板 cookie session CSRF 中间件 缓存和信号 form组件 ModelForm Ajax Django2.0文档 Django1.11.6文档 Django思维导图 Django项目部署 RESTful API 设计指南 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Django rest framework(4)----版本 Django

技术规格说明书

耗尽温柔 提交于 2020-04-14 09:36:01
【今日推荐】:为什么一到面试就懵逼!>>> 项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 作业要求 技术规格说明书 我们在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作业在哪个具体方面帮助我们实现目标 说明项目技术规格与特性 一、概述&技术栈 1. 产品概述 本团队继承了上一届的VisualPytorch,宏观架构基本一致。上一届在实现拖拽生成模型代码并提供打包下载的基础上,实现了用户注册登录,访问量统计,以及帮助界面,新手引导等功能。本组打算在其基础上进行拓展,具体内容见: 功能设计 计划 \(\alpha\) 阶段实现①扩展更多的网络层,②支持将网络封装成块,③经典模型,④更精美的可视化 在 \(\beta\) , \(\gamma\) 阶段实现⑤GPU云环境的部署,⑥集成tensorboard可视化,⑦用户登录与模型保存,⑧模型分享与交流 2.技术栈 本项目开发的 技术栈结构 如上图所示,具体描述如下: A. 前端框架 之前的项目使用了完整的前端框架,包含Jquery+BootStrap+CSS+html,拖拽部分使用JqueryUI和Jsplumb,为了实现嵌套功能,会对前端拖拽部分进行修改。 Jquery封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理

django rest framework 外键序列化方法与问题总结

大城市里の小女人 提交于 2020-03-24 07:22:29
3 月,跳不动了?>>> django rest framework 外键序列化方法与问题总结 当借口中需要出现一对多关系的时候,我们可以用rest_framwork的序列化功能来处理,代码如下. # models.py from django.db import models class PersonGoals(models.Model): name = models.CharField(max_length=100, verbose_name="目标名称") desc = models.CharField(max_length=200, verbose_name="说明") status = models.IntegerField() class Meta: db_table = "person_goals" def __str__(self): return self.name class KeyResult(models.Model): name = models.CharField(max_length=100, verbose_name="结果名称") desc = models.CharField(max_length=200, verbose_name="结果说明") status = models.IntegerField() person = models

Django-rest-framework(八)使用技巧(持续补充中)

房东的猫 提交于 2020-03-24 07:19:11
3 月,跳不动了?>>> 当viewset中,多个action对应了不同的serializers的时候 class UserView(viewsets.GenericViewSet): queryset = User.objects.all() serializer_class = UserSeriallers def get_serializer_class(self): if self.action in ['collection', ]: return Serializers1 elif self.action in ['orderhouse', ]: return Seriallers2 elif self.action in ['disperson', ]: return Serializers3 return self.serializer_class 当viewset中,多个action对应不同的permission class AdviserView(viewsets.GenericViewSet): queryset = Adviser.objects.all().order_by("-id") serializer_class = AdviserSerializers permission_classes = (AdviserPermission, ) def