• Django REST Framework框架介绍以及简单使用


    一、 Django REST framework介绍

    Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API。

    官网:https://www.django-rest-framework.org/

    中文文档:https://q1mi.github.io/Django-REST-framework-documentation/

    二、Django REST framework安装和配置

    1、安装

    pip install djangorestframework

    2、配置

    如果想要获取一个图形化的页面,需要将 rest_framework 注册到项目的INSTALL_APPS中。

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'rest_framework'
        'Api.apps.ApiConfig',
    ]

    三、基于Django实现RESTful API

    1、路由

    from django.urls import path

    from Api.views import Users

    app_name = 'Api'

    urlpatterns = [
    path('users/', Users.as_view(), name='users')
    ]

    2、视图

    class Users(View):
        def get(self, request, *args, **kwargs):
            data = {
                'code': 0,
                'data': 'response data'
            }
            return JsonResponse(data=data, status=200)
    
        def post(self, request, *args, **kwargs):
            data = {
                'code': 0,
                'data': 'response data'
            }
            return JsonResponse(data=data, status=200)

    3、使用postman分别发送get和post请求

    (1)、get请求

     (2)、post请求

    (3)注意:

     状态码一般两种写入方式,一种是直接写在data中,但是这种写入不是真正意义上的改变状态码,第二种就是上面中的例子,写入JsonResponse中

    另外,发送post请求需要csrf_token豁免。

    四、基于Django RESTful Framework框架实现

    1、路由

    from django.urls import path, include
    
    from Api.views import Users, TestView
    
    app_name = 'Api'
    
    urlpatterns = [
        path('users/', Users.as_view(), name='users'),
        path('test/', TestView.as_view(), name='test')
    ]

    2、视图

    from django.http import JsonResponse
    from django.shortcuts import render
    from django.views import View
    from rest_framework.response import Response
    from rest_framework.views import APIView
    
    
    
    class TestView(APIView):
        def dispatch(self, request, *args, **kwargs):
            """
            请求到来之后,都要请求dispatch方法,dispath方法根据不同的请求方式出发get/post/put等方法
            注意:APIView中,dispath方法有好多好多功能
            """
            return super().dispatch(request, *args, **kwargs)
    
        def get(self, request, *args, **kwargs):
            data = {
                "status": 200,
                'data': 'get success'
            }
            return Response(data, status=201)
    
        def post(self, request, *args, **kwargs):
            data = {
                'status': 200,
                'data': 'post success'
            }
            return Response(data, status=201)

    五、APIView中的方法

    1、renderer_classes  渲染的类

    2、parser_classes 解析转换的类

    3、authentication_classes  认证的类

    4、throttle_classes 节流的类,控制请求频率

    5、permission_classes 权限的类

    6、content_negotiation_class 内容过滤类

    7、metadata_class 元信息的类

    8、versioning_class 版本控制的类

    9、as_view()

    调用父类中的as_view ->dispatch方法

    dispatch方法被重写

    initialize_request 使用django的request构建了一个REST中的Request

    initial

      perform_authentication

      执行用户认证,遍历认证器,如果认证成功返回一个元祖,元祖中的第一个元素就是user,第二个元素就是auth,token

      check_permissions

      检查权限,遍历我们的权限检测器,只要有一个权限检测没有通过,就直接显示权限被拒绝,所有权限都满足,才算是拥有权限。

      check_throttles 

      检测频率,遍历频率限制器,如果验证不通过,就需要等待 

      csrf_exempt

      所有APIView的自雷都是csrf豁免的

    六、错误码

    封装status模块中,实际上就是一个常量类

    七、针对视图函数的包装

    1、CBV

      APIView

    2、FBV

      添加@api_view装饰器

      必须手动指定允许的请求方法

      

  • 相关阅读:
    将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
    placeholder的兼容处理(jQuery下)
    滚动条滚动到页面底部继续加载的处理实例
    html/css基础篇——html代码编写过程中的几个警惕点
    多iframe使用tab标签方式添加、删除、切换的处理实例
    iframe的内容增高或缩减时设置其iframe的高度的处理方案
    IE9父容器overflow:auto时,子容器状态更改导致滚动条下出现额外空间的问题探讨
    C语言基本类型之long long int
    VIM使用技巧总结
    Ineedle驱动方式dpdk测试性能
  • 原文地址:https://www.cnblogs.com/huiyichanmian/p/12256203.html
Copyright © 2020-2023  润新知