首页
学习
活动
专区
圈层
工具
发布

Django rest Framework入门 四 :视图

在Django rest Framework入门 二 :DRF框架初体验中其实已经使用了视图了(book.views里面的代码),而且就是实际开发中最常用的模式,但是那是经过DRF框架高度封装的,代码的可读性不好...* **视图类代码** 这里有一个特别的处理,就是视图类中的函数名是list, create这样具体的动作,而不是在django中的put,post这样的请求方法,这和后面的url中配置有关。...+ router.urls ``` 可以看到在与Django中不同的是,在视图类的as_view方法中添加了一个字典参数,字典中的内容是HTTP请求方法和对应的函数名的键值对。...在Django中,由于查单一和查多个都是由GET请求方法触发的,所以不能写在同一个类中,必须拆分到详情类和视图类中。...其实ModelViewSet和ViewSet分别继承于GenericViewSet和APIView,上面说到的他们的不同点也正是源于此,建议读者可以看看rest_framework.viewsets里面的源码

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

    django-rest-framewor

    DRF(Django RestFramework)是一套基于Django开发的、帮助我们更好的设计符合REST规范的Web应用的一个Django App,所以,本质上,它是一个Django App。...2 解析器组件 (用来解析数据的请求的组件)   Django并不能处理请求协议为application/json编码协议的数据   注意: DRF解析器会封装到View中的parsers内,在视图函数被调用时...,many默认为False,如果返回的数据是一个列表嵌套字典的多个对象集合,需要改为many=True 返回:将序列化对象的data属性返回即可  {{ 实践代码 }} --post接口设计 url...进行接口逻辑优化     导入模块 from rest_framework.viewset import ModelViewSet     设计url re_path(r'books/$, views.BookView.as_view...”: “retrieve”, “delete”: “destroy”, “put”: “update” } 上一步中执行as_view()方法传递参数的目的是为了完成优化,将delete请求方式重新命名为不同的函数

    2.1K10

    Django Rest Swagger生成api文档

    关于swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API。...Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。 Swagger 文件可以在许多不同的平台上从代码注释中自动生成。 Swagger 有一个强大的社区,里面有许多强悍的贡献者。...'LOGIN_URL': 'rest_framework:login', 'LOGOUT_URL': 'rest_framework:logout', # 'DOC_EXPANSION'...class UserViewSet(viewsets.ModelViewSet): '''查看,编辑用户的界面''' queryset = User.objects.all().order_by...from rest_framework.schemas import get_schema_view from rest_framework_swagger.renderers import SwaggerUIRenderer

    3.5K10

    3. DRF进阶之DRF视图和常用功能

    View:Django默认的视图基类,负责将视图连接到URL,HTTP请求方法的基本调度,之前写类视图一般都用这个。...,并结合router自动映射路由 ModelViewSet:继承GenericAPIView和五个扩展类,封装好各种请求,更加完善,业务逻辑基本不用自己写了。...常用属性: request.data:返回POST提交的数据,与request.POST类似 request.query_params:返回GET URL参数,与request.GET类似 浏览器get...) 为了方便设置状态码,rest_framework.status模块提供了所有HTTP状态码,以下是一些常用的: HTTP_200_OK:请求成功 HTTP_301_MOVED_PERMANENTLY...,删除,查看 ModelViewSet类 由于ModelViewSet有较高的抽象,实现自动增删改查功能。

    5.9K10

    教你 10 分钟构建一套 RESTful API 服务( 下 )

    的扩展,增加了对快速构建 REST API 的支持 django-rest-swagger:Django 支持的Swagger UI,可以生成 API 接口文档 django-filter:配合 djangorestframework...ModelViewSet 定义了 CRUD 的全部功能 所以只需要编写一个 ModelViewSet 的子类,重写 create()、list()、retrieve()、update()、destory...,不同的错误状态码,返回不同的数据 需要注意的是, settings.py 文件指定的异常处理类和该异常处理类的路径要保持一致 # 异常处理 def custom_exception_handler(...,使用 rest_framework_swagger 中的 get_swagger_view() 函数,创建一个可视化的 API 界面 # api/api/urls.py from rest_framework_swagger.views...import get_swagger_view schema_view = get_swagger_view(title='API服务') urlpatterns = [ url(r'^$

    2K40

    DjangoRestFramework,认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    ): #从前后端分离的项目来讲,get请求不需要写,因为get就是个要登陆页面的操作,vue就搞定了,所以我们这里直接写post请求就可以了 def post(self,request)...的地方调用的,我们是上面写个UserAuth类 authentication_classes = [UserAuth,] #认证类可以写多个,一个一个的顺序验证 def get(self...,所以别忘了return是结束函数的意思,所以如果你有多个认证类,那么返回值放到最后一个类里面   好,我们写一写获取token值,然后校验的功能,看views.py的代码: from django.shortcuts...注册器 帮我们自动生成4个url,和我们自己写的差不多: from django.conf.urls import url,include from django.contrib import admin...,但是一般不用它,因为不同的数据展示可能每页展示的数量是不同的 } 如果我们不想用全局的page_size配置,我们自己可以写个类来继承分页类组件,重写里面的属性: #引入分页 from rest_framework.pagination

    77420

    Django Swagger接口文档生成

    如:接口测试站点(http://httpbin.org/#/),也是利用Swagger来生成接口文档 Swagger优势 1)Swagger可生成一个具有互动性的API控制台,开发者可快速学习和尝试API...2)Swagger可生成客户端SDK代码,用于不同平台上(Java、Python...)的实现 3)Swagger文件可在许多不同的平台上从代码注释中自动生成 4)Swagger有一个强大的社区,里面有许多强悍的贡献者...,将之前定义的UserViewSet和GroupViewset补充注释 4.在urls.py中添加get_schema_view辅助函数 5.启动Django服务,检测Swagger接口文档配置效果 环境说明...'LOGIN_URL': 'rest_framework:login',     'LOGOUT_URL': 'rest_framework:logout',     # 'DOC_EXPANSION'...partial_update:             更新现有用户上的一个或多个字段         update:             更新用户     """     '''查看,编辑用户的界面

    4.9K40

    Django REST Framework-常用的类视图

    Django REST Framework是基于Django的一个用于构建Web API的框架。它提供了许多用于构建Web API的工具和实用程序,其中最常用的是类视图。...APIViewAPIView是Django REST Framework中最基本的类视图之一。它提供了一个通用的方式来处理HTTP请求,并返回一个HTTP响应。...ReadOnlyModelViewSetReadOnlyModelViewSet是一个特殊的ModelViewSet,它只允许GET请求。它适用于只读API,例如展示资源的API。...与APIView不同,您不需要手动处理请求,并确定要返回的响应。相反,您可以使用内置的方法来处理常见API操作。...本文介绍了Django REST Framework中最常用的类视图,包括APIView,GenericAPIView,ModelViewSet,ReadOnlyModelViewSet和ViewSet

    1.2K30

    教你 10 分钟构建一套 RESTful API 服务( Django篇 )

    的扩展,增加了对快速构建 REST API 的支持 django-rest-swagger:Django 支持的Swagger UI,可以生成 API 接口文档 django-filter:配合 djangorestframework...ModelViewSet 定义了 CRUD 的全部功能 所以只需要编写一个 ModelViewSet 的子类,重写 create()、list()、retrieve()、update()、destory...,不同的错误状态码,返回不同的数据 需要注意的是, settings.py 文件指定的异常处理类和该异常处理类的路径要保持一致 # 异常处理 def custom_exception_handler(...,使用 rest_framework_swagger 中的 get_swagger_view() 函数,创建一个可视化的 API 界面 # api/api/urls.py from rest_framework_swagger.views... import get_swagger_view schema_view = get_swagger_view(title='API服务') urlpatterns = [     url(r'^$

    7.5K10

    用django写接口(实战篇)

    所以分页是很有必要的,分页可以全局设置,也可以不同的 view 设置不同的分页。...10, } 2.不同 view 设置不同分页 我们也可以在不同的 view 下设置不同的分页参数,分页的类我们可以通过继承已有的 Pagination 或者 BasePagination 来写,然后通过...pagination_class 指定 # 自定义 Pagination,每个 Pagination 的属性不同,可以通过源码查看,然后修改需要的属性 from rest_framework.pagination...filtering http://www.django-rest-framework.org/api-guide/filtering/#example rest_framework 权限设置 到目前为止我们写的接口不设置任何权限上的设置...,rest_framework 的认证还包括许多,可以查看官网Authentication http://www.django-rest-framework.org/api-guide/authentication

    2.8K20

    Python进阶41-drf框架(三)

    model对应的字典 # 群增:传的数据是 装多个 model对应字典 的列表 def post(self, request, *args, **kwargs): request_data...可以通过 response.data 拿到工具方法返回的Response类型对象的响应数据 工具视图 # 1)工具视图都是GenericAPIView的子类,且不同的子类继承了不听的工具类,重写了请求方法...'my_get_list'})), # 表示get请求会交给my_get_list视图函数处理 GenericAPIView 与 APIView 作为两大继承视图的区别 # 1)GenericViewSet...,登陆的post不满足 # post请求验证码的接口,不需要 model 类的参与 # 案例:登陆的post请求,并不是完成数据的新增,只是用post提交数据,得到的结果也不是登陆的用户信息...,而是登陆的认证信息 路由组件(了解) from django.conf.urls import include from rest_framework.routers import SimpleRouter

    80920

    Django REST Framework-路由器(一)

    Django REST Framework(以下简称DRF)是基于Django框架构建的Web API框架。...路由器可以根据视图函数的名称和参数,自动生成URL,并将请求分发到对应的视图函数中。使用路由器可以避免手动编写URL配置的繁琐和容易出错。二、路由器的使用安装DRF在使用路由器之前,需要先安装DRF。...使用视图集需要先定义一个继承自ModelViewSet或ViewSet的类,然后将这个类传递给路由器的register方法即可。...例如,下面的代码定义了一个继承自ModelViewSet的视图集类BookViewSet,然后将这个类注册到路由器中:from rest_framework import viewsetsfrom .models...)),]这个例子中,我们将路由器的URL添加到了Django的根URLconf中。

    1.1K41

    drf之请求、响应、视图

    作者&好友:Laoqi 1、请求与响应 1.1 Request(请求) drf 传入视图的request 不再是Django默认的HttpRequest对象,而是drf 提供的拓展了HttpRequest...类似于Django中标准的request.POST和 request.FILES属性,但提供如下特性: 1 包含了解析之后的文件和非文件数据 2 包含了对POST、PUT、PATCH请求方式解析后的数据...APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象; 视图方法可以返回REST framework...提供的关于序列化器使用的属性与方法 属性:serializer_class  指明视图使用的序列化器 方法: get_serializer_class(self) : 当出现一个视图类中调用多个序列化器时...,那么可以通过条件判断在get_serializer_class方法中通过返回不同的序列化器类名就可以让视图方法执行不同的序列化器对象了。

    2.8K20
    领券