zoukankan      html  css  js  c++  java
  • 学习笔记-Python-Django REST Framework-视图

    - 视图
    - DRF的视图从处理任务,处理流程等跟Django基本一致
    - 此视图基本是Django视图的扩展
    - Request
    - 把请求解析成一个request实例
    - 属于DRF的,跟Django的HttpRequest不太一样
    - 在得到Request之前有一个Parse对传入的数据请求进行解析
    - data属性
    - 请求数据体,类似于Django的request.POST, request.FILES
    - 在DRF中主要指的是json
    - query_params
    - 所有传入的关键字,举例如下面的url参数name
    api.tulingxueyuan.com/student/?name='liu'
    # 使用案例
    # name = self.request.query_params['name'] # 不建议使用如果不存在name会崩溃
    name = self.request.query_params.get('name', None)
    - user
    - 登陆后的用户信息都在user中
    - 如果没有登陆,则是anoymous,无名用户
    - 可以用来判断用户是否登陆成功
    - Response
    - from rest_framework.response import Response
    - 用Renderer渲染器对返回内容进行渲染
    REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASS':(
    # 下面是默认响应的渲染类
    'rest_framework.renderers.JSONRenderere', # json渲染类
    'rest_framework.renderers.BrowsableAPIRenderer', # 浏览器访问后台用到
    )
    }
    - 返回的构造方式
    - return Response(data, status=None, template_name=None, headers=None, content_type=None)
    - data:返回的数据
    - status表示http协议里返回的状态码
    - 1xx:信息告知
    - 2xx:成功
    - 3xx:重定向
    - 4xx:请求错误(前端)
    - 5xx:服务器错误
    - 视图类
    - APIView
    - from rest_framework.views import APIView
    - 是django中View的子类
    - 跟View有不同的地方
    - 传入传出数据用的是DRF的请求和返回类
    - 会引发并处理APIException
    - 在dispatch之前,会进行身份验证、权限检查、流量控制
    - 支持的属性有
    - authentication_classes:列表或者元祖,身份验证类
    - permisson_classes:进行权限验证
    - throttle_classes:流量控制类
    - 对API的访问提供了一些方便
    - HTTP-Method + 名词
    - 默认对HttpMethod常用方法提供了支持
    - 案例:StudentAPIView
    - API调试工具
    - chrome - postman
    - firefox - RESTClient

    - GenericAPIView
    - APIView的子类
    - 支持的属性
    - queryset:查询结果集
    - serializer_class:视图使用的序列化器
    - panination_class:分页控制器
    - filter_backends:过滤器后端
    - lookup_field:查询条件字段,默认为pk也就是主键,默认id
    - get_queryset:返回查询结果集集合,经常需要重写
    - get_serializer_class:得到序列化器类(得到一个类)
    - get_serializer:得到序列化器(得到一个实例)

    - ListModelMixin:查全部
    - list(request, *args, **kwargs)
    - RetrieveModelMixin:查指定的一个
    - retrieve(request, *args, **kwargs)
    - CreateModelMixin:增加
    - create(request, *args, **kwargs)
    - UpdateModelMixin:修改
    - update(request, *args, **kwargs)
    - DestroyModelMixin:删除
    - destroy(request, *args, **kwargs)
    - ViewSet
    - 把一系列操作打包放入一个类中
    - list:GET
    - retrieve:GET + id
    - destroy:DELETE
    - update:UPDATE
    - create:POST

     

    
    
    
    
  • 相关阅读:
    Mac 应用程序中的App在Launchpad中不显示
    oh-my-zsh的安装
    用Lambda 表达式实现Runnable
    用Lambda 表达式实现Runnable
    记录Nacos配置Mysql数据库连接失败解决
    Mac最好用的终端iTerm2安装及配置
    MySQL安装设置密码策略问题
    构建微服务模块流程
    dependencies与dependencyManagement的区别
    winSocket 2 简单的可持续的socket
  • 原文地址:https://www.cnblogs.com/Cloudloong/p/10209929.html
Copyright © 2011-2022 走看看