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

第 3 篇:实现博客首页文章列表 API

开发异同时说过,django-rest-framework 开发和传统开发方式没有什么不同,区别仅在于返回数据格式不同而已。...视图函数里我们先从数据库获取文章列表资源,然后使用序列化器对其进行序列化序列化数据存在 data 属性里,我们把传递给 HTTP 响应类 Response,并将这个响应返回。...被序列化对象序列化数据一个扁平 Python 字典字典数据描述了这个对象资源。...和表单类似,django-rest-framework 序列化器也可以根据关联模型,自动检测被序列化模型各个属性数据类型,推测需要使用序列化字段,无需我们显示定义。...而对于文章关联 category、author,它们本身也是一个对象,django-rest-framework 就无法推测该使用什么类型系列化字段来序列化它们了。

98620

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

#django序列化组件,不是我们要学drf序列化组件昂 #from rest_framework import status #返回指定状态码时候会用到 #return Response(...(serializers.Serializer): #这里面也要写对应字段,你写了哪些字段,就会对哪些字段数据进行序列化没有序列化字段,不会有返回数据,你可以注释掉一个,然后看返回数据是啥...#还记得创建字典另外一种写法?...#接下来序列化单个model对象,序列化单个对象返回一个字典结构 {},序列化多个对象返回是[{},{}]这种结构 book_serializer = BookSerializers...,2.要么去数据库表中将这个字段设置一个null=True,但是第二种方式肯定是不太好,记住,当你获取数据时,使用这个序列化组件,即便是这个字段名字和数据表中字段名字相同,也是没有问题,只有在用户提交数据保存时候才会有问题

2.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

django写接口(实战篇)

view,那这部分我们继续深入了解下 DRF 分页,多条件筛选以及 Token 权限认证 接口数据分页 如果说,后台给你返回数据很多很多,然后又没有做分页(反正我是碰到过),然后就一直卡在加载界面...1.设置全局分页参数 我们可以在 project 下 settings.py 文件中加入 REST_FRAMEWORK 字典,设置全局分页参数 REST_FRAMEWORK = { # 配置全局分页类型和每页数量...': ('django_filters.rest_framework.DjangoFilterBackend',) } 基本配置完后我们需要对我们 viewSet 做些修改,增加一个 filter_backends...首先我们要先创建一个 filters.py 文件,用来定义过滤器 filter import django_filters # 自定义过滤器需要继承 django_filters.rest_framework.FilterSet...'rest_framework', 'rest_framework.authtoken', ] # 然后在 REST_FRAMEWORK 字典中配置 DEFAULT_AUTHENTICATION_CLASSES

2K20

django-rest-framewor

DRF(Django RestFramework)是一套基于Django开发、帮助我们更好设计符合REST规范Web应用一个Django App,所以,本质上,它是一个Django App。...(直接在官网下载即可) 3 序列化组件    序列化组件使用:   --get接口设计: 导入序列化组件:from rest_framework import serializers 定义序列化类,...,many默认为False,如果返回数据一个列表嵌套字典多个对象集合,需要改为many=True 返回:将序列化对象data属性返回即可  {{ 实践代码 }} --post接口设计 url...ViewSetMixin类重写了as_view()方法,也就是在这个地方将几个函数重新绑定,没有重写dispatch方法 该方法返回视图函数view,注意在这个函数中有一个行 self = cls...,请在最后一个认证类中返回,因为在前面返回,self.authentication()方法中会对返回值进行判断,若不为,认证过程就会终止.

1.5K10

【愚公系列】2022年04月 Python教学课程 70-DRF框架之视图集

前言 使用视图集ViewSet,可以将一系列逻辑相关动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据...视图集使用as_view()方法时候,才会将action动作与具体请求方式对应上。...ViewSet主要通过继承ViewSetMixin来实现在调用as_view()时传入字典(如{‘get’:‘list’})映射处理工作。...GenericViewSet就帮助我们完成了这样继承工作,继承自GenericAPIView与ViewSetMixin,在实现了调用as_view()时传入字典(如{‘get’:‘list’})映射处理工作同时...此扩展方法包括:get_serializer_class(获取序列化返回)、action属性、自定义方法使用 from django.db import DatabaseError from rest_framework.authentication

1.6K30

drf之请求、响应、视图

3 利用了REST frameworkparsers解析器,不仅支持表单类型数据,也支持JSON数据 .query_params request.query_params与Django标准...参数说明: data: 为响应准备序列化处理后数据; status: 状态码,默认200; template_name: 模板名称,如果使用HTMLRenderer 时需指明; headers: 用于存放响应头信息字典...APIView与View不同之处在于: 传入到视图方法中REST frameworkRequest对象,而不是DjangoHttpRequeset对象; 视图方法可以返回REST framework...GenericAPIView 继承自APIVIew,主要增加了操作序列化器和数据库查询方法,作用是为下面Mixin扩展类执行提供方法支持。通常在使用时,可搭配一个或多个Mixin扩展类。...提供关于序列化使用属性与方法 属性:serializer_class  指明视图使用序列化器 方法: get_serializer_class(self) : 当出现一个视图类中调用多个序列化器时

2.1K20

DRF框架学习(二)

3.DRF框架 作用:大大提高RestAPI接口开发效率 简介: Django REST framework 框架是一个用于构建Web API 强大而又灵活工具。...(若没有Django环境,需要先创建环境安装Django) 3.1.1安装DRF pip install djangorestframework 3.1.2 添加rest_framework应用 我们利用在...3.2见识DRF魅力 我们仍以在学习Django框架时使用图书英雄为案例,使用Django REST framework快速实现图书REST API。 3.2.1....django路由列表中 4.Serializer序列化器 作用:进行数据序列化和反序列化 序列化:把对象转换为字典序列化数据校验;数据保存(可以利用这一点实现新增和更新); 4.1使用 定义一个序列化器类...4.4序列化定义 Django REST frameworkSerializer使用类来定义,须继承rest_framework.serializers.Serializer。

4.1K30

不会DRF?源码都分析透了确定不来看?

可以更方便使用django写出符合restful规范接口 下载安装 pip3 install djangorestframework pycharm下载 注意 rest_framework一个...(view) 我们发现返回值是csrf_exempt(view)局部不验证,在Django总结到了不懂可以看一下:CSRF 跨站请求伪造 快速使用DRF写出接口 序列化和反序列化 API接口开发,最核心最常见一个过程就是序列化...,所谓序列化就是把数据转换格式,序列化可以分两个阶段: 序列化:把我们语言识别的数据转换成指定格式提交给别人(前端) 比如python中字典,列表,对象等转json,xml,prop···· 反序列化...rest_framework.request.Request常用属性和方法 这里request和原来Django使用request一样,只是多了一个request.data request.data...,这样只能获取到一个,需要使用getlist来获取,取出全部 官网一些解释 原来django没有request.data,造一个

1.3K10

经历了源码痛苦,掌握DRF核心序列化

),序列化器可以把字典转换成模型存到数据库中 存数据库需要校验,反序列化就可以帮我们完成数据校验功能 通俗理解为: 响应给前端内容需要序列化(给前端看),存数据数据就反序列化序列化:模型对象...----字典---json字符串 反序列化:json数据---字典----模型对象 导入:from rest_framework.serializers import Serializer 序列化 序列化...,对象.data,通过Response返回给前端 serializer.py:序列化类 from rest_framework import serializers # 继承Serializer class...,反序列化验证字段用 在对BookSerializer类实例化传入参数不知道传什么,由于我们没有写构造函数,去父类看需要什么参数传什么就可以了 使用浏览器测得时候一定要注册rest_framework...:param validated_data: 校验通过数据 :return: instance ''' # 如果修改一个情况,从校验通过数据

77610

DjangoRESTframework(补充)

验证失败,可以通过序列化器对象 errors 属性获取错误信息,返回一个字典, 包含字段和字段错误,若是非字段错误,可以通过修改 REST framework 配置中 NON_FIElD_ERRORS_KEY...,如果使用HTMLRenderer 时需指明; headers: 用于存放响应头信息字典; content_type: 响应数据Content-Type,通常此参数无需传递,REST framework...两个基类 1) APIView rest_framework.views.APIView APIView是REST framework提供所有视图基类,继承DjangoView父类...APIView与View不同之处在于: 传入到视图方法中REST frameworkRequest对象,而不是DjangoHttpRequeset对象; 视图方法可以返回REST framework...注意,在提供序列化器对象时候,REST framework会向对象context属性补充三个数据:request、format、view,这三个数据对象可以在定义序列化器时使用

2.2K30

第 11 篇:基于 drf-haystack 文章搜索接口

django-haystack 默认返回搜索结果是一个类似于 django QuerySet 对象,需要配合模板系统使用,因为未被序列化,所以无法直接用于 django-rest-framework...但是,通过之前功能我们看到,使用 django-rest-framework一个近乎标准化但又枯燥无聊过程:首先是编写序列化器用于序列化资源,然后是编写视图集,提供对资源各类操作接口。...此时就要发挥开源社区力量,去 GitHub 使用关键词 rest haystack 搜索,果然搜到一个 drf-haystack 开源项目,专门用于解决 django-rest-framework 和...所以接下来就进入到 django-rest-framework 标准开发流程:定义序列化器 -> 编写视图 -> 配置路由,这样一个标准搜索接口就开发出来了。...但是,django-rest-framework没有提供这些比较个性化需求序列化字段,因此接下来我们接触 drf 一点高级用法——自定义序列化字段。

1.6K20

揭开DRF序列化技术神秘面纱

在RESTful API中,接口返回是JSON,JSON内容对应数据库中数据,DRF是通过序列化(Serialization)技术,把数据模型转换为JSON,反之,叫做反序列化(deserialization...创建虚拟环境 虚拟环境是独立Python环境,可以和系统环境分离,安装需要包即可,使用以下命令创建并激活: # 创建Python虚拟环境 python -m venv env # 激活虚拟环境 env...其实ModelSerializer并没有做额外处理,我们可以从部分代码片段看到: serializer_field_mapping = { models.AutoField:...编写views 我们之前用是已经封装好rest_framework.viewsets,这里直接用Django原生view。...,服务器没有进行新建或修改数据操作,该操作是幂等 401 Unauthorized - *:表示用户没有权限(令牌、用户名、密码错误) 403 Forbidden - *:表示用户得到授权(与401

66420

DRF学习笔记(一)

# 一、Django REST FrameWork 简介 使用 Django REST FramWork 能够让我们使用 Django 编写后端 API 接口时,更优雅处理数据 json 序列化和...# 二、序列化使用 # 1、介绍 序列化器是 DRF 当中灵魂,因为有存在,能够帮助我们少写非常多重复性代码,比如,当我应用当中有这样一个 Model : from django.db...many=True) 接下来使用 DRF 给我们封装好 Response 对象进行数据返回即可 from rest_framework.response import Response 这样我们就能够开始使用...DRF 提供序列化器对我们之前编写 views 代码进行改造了 # 三、Request 对象解析 当我视图层继承了 DRF 给我们提供 View 时,DRF会给我们编写视图函数传递一个...方法内容解析,意味着你可以访问PUT和PATCH类型reqeust内容 提供REST framework灵活请求解析,而不单单支持from数据

61610

Django序列化简单使用

,这个类必须继承rest_framework.serializer.Serializer 。...简单定义代码如下所示: # ser.py from rest_framework import serializers # 声明序列化器,所有的序列化器都要直接或间接继承于Serializer class...drf提供视图会帮我们把字典转换成json,或者把客户端发送过来数据转换字典。 3、序列化使用 序列化使用分为两个阶段:即在客户端请求(提交)数据时,使用序列化器可以完成对数据序列化。...如果是非字段错误,可以通过修改REST framework 配置中NON_FIELD_ERRORS_KEY 来控制错误字典键名。...如果我们想要使用序列化器对应Django模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。

1.5K40

django-rest-framework框架学习

django中很著名一个框架是django-rest-framework,帮我们减少了很多工作量,尤其在序列化与反序列化成我们需要格式帮了我们省了很多事 在这里就记录一下个人学习过程 django-rest-framework...api类,只需要继承rest_framework中generics中某个类,重写我们需要方法实现合适逻辑即可 在urls.py中配置所需要url 一组apidemo 创建一个model 在创建好...官方文档:http://www.django-rest-framework.org/api-guide/serializers/ 创建serializers.py在其中实现序列化类 由于这个序列化是和我们模型想对应相关...这里我们简单显示所有的字段 实现视图api类 官方文档: http://www.django-rest-framework.org/api-guide/generic-views/ 在这里只需要继承相关类...是多少, serializer.data是对模型序列化字典,如果想拼成需要格式,需要提前构造合适字典,在用Response()方法帮我们序列化成json类型 在urls中自定义资源url 在urls.py

1.2K10

day93-视图封装&路由组件&版本控制

1.2 单条查询和多条查询不一样,分开写 1.3 所以策略是: -- 先写一个基类,定义 queryset 和 serializers 用来被继承后重写, -- 单条再写单独类...queryset def get_queryset(self): return self.queryset.all() # django 坑 # 定制函数返回序列化类...第三层封装基本不怎么用 2.1 第三层封装在视图中 2.1.1 写一个继承所有的二次封装类 2.1.2 再继承一个 ViewSetMixin 类,from rest_framework.viewsets..."""""""""""""""" # 继承 ViewSetMixin(from rest_framework.viewsets import ViewSetMixin) 和 上面第二次继承 pass...id全部使用 pk 来代替 2.2.3 参数接受一个字典,键值分别是 请求方式:处理逻辑函数名 """将views里面写第三次封装BookModelView拿过来""" """大坑!

37200

Django+Vue开发生鲜电商平台之5.使用DRF实现商品列表页和过滤

但是从代码中可以看到: 通过在新建列表、其元素为单个商品信息组成字典一个一个地添加,显得很麻烦,可进行改进; 有些字段不能直接用json.dumps()方法序列化,如datetime,会报错,如商品列表视图修改为如下时...2.serializer序列化model 使用Django自带model_to_dict()方法可以实现直接将模型数据转化为字典形式,但是对于DateTimeField、ImageField等字段时还是无法序列化...使用REST框架一些原因: 该网站可浏览API是你开发人员一个巨大可用性胜利; 身份验证策略,包括OAuth1a和OAuth2软件包; 支持ORM和非ORM数据序列化; 完全可自定义...', 'rest_framework', ] 1.使用serializer实现基本序列化 通过DRF实现商品列表页原理是: 通过DRF返回数据,基于CBV(Class-based Views...使用Response类只是为返回内容协商Web API响应提供了一个更好接口,该响应可以呈现为多种格式。 2.DRF过滤器 DRF提供了过滤功能,来实现简单高效过滤。

5.3K20

django-rest_framework api框架学习day1

*** 最主要两个包 **** 用于api类继承 from django.views import View 用于json格式数据输出, from django.http import...原生django对urlencoding会进行解析兼容较好,其余都不会进行解析 *** ##下面是rest_framework框架 *** from rest_framework.serializers...import Serializer 序列化器 from rest_framework.views import APIView # 继承自Viewapi接口 from rest_framework.response...import Response # 返回Response *** csrf问题,如果是继承自APIview中的话是默认局部禁用掉csrf验证,所以,补助是csrf验证也是可以,但是如果有继承自...View的话就会默认开启csrf验证,这样的话View如果没有通过csrf验证就会抛出错误 *** 传送数据到外部称之为序列化,外部传送数据进来称反序列化

1.3K40

Python进阶40-drf框架(二)

),但是处理范围有限 3)drf提供处理方案两种,处理了返回异常现象,没处理返回None(后续就是服务器抛异常给前台) 4)自定义异常目的就是解决drf没有处理异常,让前台得到合理异常信息返回,...需要先创建一个serializer.py文件,当然文件名可以自定义,与models文件在同一级即可 # 序列化组件,为每一个model类,提供一套序列化工具类 from rest_framework...# 序列化组件,为每一个model类,提供一套序列化工具类 from rest_framework import serializers from django.conf import settings...serializer.py # 序列化组件 - 为每一个model类通过一套序列化工具类 # 序列化组件工作方式与django froms组件非常相似 from rest_framework import...:[{},{},{}] 或者字典字典: {"1":{},"2":{},"3":{}} 群改需要使用ListSerializer,并且要重写update方法 from rest_framework.serializers

1.9K20
领券