前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django REST Framework

Django REST Framework

原创
作者头像
ruochen
修改2021-07-22 14:20:17
2.2K0
修改2021-07-22 14:20:17
举报
文章被收录于专栏:若尘的技术专栏

Django REST Framework

1. REST

  • 前后端分离
  • API-ApplicationProgrammingInterface
    • 为了应付千变万化的前端需求
  • REST:RepresataionsStateTrans
    • 20000 Fieding博士提出
    • RESTful:遵守REST规范的技术设计的软件可以称为RESTful
  • REST规范
    • URL代表一个资源,一个资源应该是一个名词
    • 动作有HTTP的methode方法提供
    • URL应该包含版本信息,版本信息也可以放在HTTP协议中
    • 过滤信息,使用URL的参数代表过滤
    • 返回值: 每一个返回代码都有具体特定含义
    • 返回格式:推荐固定具体格式
  • DjangoRestFramework(DRF)
  • DRF的主要任务
  • 案例TlxyDRF
    • django-admin startproject TlxyDRF
    • python manage.py startapp case01
    • 配置settings
    • 配置urls
    • 创建三个模型:Student,Teacher, ClassRoom
    • 创建序列化器
    • 创建视图聚合

序列化

  • 序列化: 把系统运行中的一些实例等转换成一种可直接表示出来的格式,用来保存,传输等
  • 反序列化: 序列化的反操作序列化/反序列化-DRF

实验步骤

  • 创建project DRF2
  • 创建app MySer
  • settingsserializer的类型的参数
  • read_only: 仅用于序列化输出
  • write_only: 反序列化输入
  • required:反序列化时必须输入,默认是True
  • allow_null: 允许传入None
  • validators: 使用验证器创建serializer对象/使用
  • 构造方法
代码语言:txt
复制
    Serializer(instance=None, data=empty, **kwarg)
  • 反序列化
    • 验证
      • is_valid:
        • 验证数据是否合法,返回boolean
        • 在使用从外部传入的数据之前,必须使用此函数进行验证
        • 如果验证失败,返回数据错误异常
      • validated_data:
        • 经过验证后的数据,存入此结构
  • 视图
    • DRF的视图从处理任务,处理流程等跟Django基本一致
    • 此视图基本是django视图的扩展
    • Request
      • 把请求解析成一个request实例
      • 属于DRF的,跟django的HttpRequest不太一样
      • 在得到Request之前有一个Parse对传入的数据请求进行解析
      • data属性
        • 请求数据体,类似于Django的request.POST, request.FILES
        • 在DRF中主要指的是Json
      • query_params
        • 所有传入的关键字
代码语言:txt
复制
                api.tulingxueyuan.com/student/?name='liu'
代码语言:txt
复制
                # 使用案例
代码语言:txt
复制
                name = self.request.query_params.get('name', None)
代码语言:txt
复制
    - user
        - 登录后的用户信息都在user中
        - 如果没有登录,则是anoymous
        - 可以用来判断用户是否登录成功Responserest_framework.response.Response用Renderer渲染器对返回内容进行渲染
代码语言:txt
复制
            REST_FRAMEWORK = {
代码语言:txt
复制
                    'DEFAULT_RENDERER_CLASSES': (  # 默认响应渲染类
代码语言:txt
复制
                        'rest_framework.renderers.JSONRenderer',  # json渲染器
代码语言:txt
复制
                        'rest_framework.renderers.BrowsableAPIRenderer',  # 浏览API渲染器
代码语言:txt
复制
                    )
代码语言:txt
复制
                }
代码语言:txt
复制
    - 返回的构造方式
        -  return Response(data, status=None, template_name=None, headers=None, content_type=None)
        - data: 返回的数据
        - status: 返回的状态码
            - 1xx: 信息告知
            - 2xx: 成功
            - 3xx:重定向
            - 4xx: 请求错误
            - 5xx: 服务器错误视图类APIViewrest_framework.views.APIView是django中View的子类跟View有不同的地方传入传出数据用的是drf的请求和反馈类会引发并处理APIException在dispatch之前,会进行身份验证,权限检查,流量控制支持的属性有authentication_classes: 列表或者元祖,身份验证类   permisson_classes: 进行权限验证throttle_classes:流量控制类对API的访问提供了一些方便HTTP-Method + 名词默认对HttpMethod常用方法提供了支持案例: views - StudentAPIView    
  • API调试工具
    • chrome - postman
    • firefox - RESTClient
代码语言:txt
复制
- GenericAPIView
    - APIView的子类
    - 支持的属性
        - queryset:查询结果集
        - serializer_class: 视图使用的序列化器
        - panination_class: 分页控制器
        - filter_backends: 过滤器后端
        - lookup_field:查询条件字段,默认为pk
    - get_queryset: 返回查询结果集集合,经常需要重写
    - get_serializer_class:得到序列化器类
    - get_serializer: 得到序列化器ListModelMixinlist(reqeust, *args, **kwargs)  CreateModelMixincreate(requst, *args, **kwargs)    RetrieveModelMixinretrieve(...............)  UpdateModelMixinupdate(..........)DestroyModelMixindestroy(.......)
  • ViewSet
    • 把一系列操作打包放入一个类中
    • list:GET
    • retrieve:GET + id
    • destroy:DELETE
    • update:UPDATE
    • create:POST

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Django REST Framework
  • 1. REST
  • 序列化
  • 实验步骤
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档