DRF初识

前言

  • 前后端分离

    前端与后端分离开,前端负责页面及页面的样式及动态效果;页面需要的数据通过ajax请求,向后端请求数据。后端负责将数据已json的格式返回给前端。
    前端使用:大部分使用vue.js,其他有:AngularJs、ReactJs
    后端:不规定语言,但返回给前端的都是json数据
    
  • 移动端

    分为两部分:
        App:手机上的APP
        后端:给app返回json数据
    
  • PC端应用

    例如:CRM,前端后端一起写,运行在浏览器上。一般情况下都是PC端使用
    

基于Django实现的任务

  • 开发一个系统

    • 基于Django开发的接口

      需要写四个url来实现对数据的增删改查:
          http://127.0.0.1:8000/info/list/
          http://127.0.0.1:8000/info/add/
          http://127.0.0.1:8000/info/update/
          http://127.0.0.1:8000/info/delete/
      
    • 基于django且遵循restful规范开发的接口

      只需要一个url,即可实现对数据的增删改查
      	http://127.0.0.1:8000/info/
      前端在发送请求时:
      	get:获取数据
      	post:添加数据
      	put:更新全部数据
      	patch:更新部分数据
      	delete:删除数据
      
    • 总结:基于Django可以开发遵循restful规范的接口

      -FBV
      	可以实现,但是比较麻烦
      -CBV
          相对比较简单,根据method的不同做不同的区分
      

DRF简介

  • 全称:DjangoRestFramework,依附于Django开发的一个框架;简称DRF
  • 注意:若没有drf框架,Django完全可以完成,但是有了drf可以让我们在做特定的业务时更加的省事,节省代码

DRF快速使用

  1. 安装

    pip install djangorestframework
    
  2. 使用(djangorestframework,相当于Django的一个APP)

    -在settings文件内进行注册:
    	INSTALLED_APPS = [
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
            'rest_framework'
       ]
    -编写路由:
    	from django.conf.urls import url
        from django.contrib import admin
        from api import views
    
        urlpatterns = [
            url(r'^drf/info/', views.DrfInfoView.as_view()),
        ]
    -编写视图:
    	from rest_framework.views import APIView
        from rest_framework.response import Response
    
        class DrfInfoView(APIView):
            def get(self, request, *args, **kwargs):
                data = [
                    {'id': 1, 'title': '震惊了.....'},
                    {'id': 2, 'title': '震惊了.....'},
                    {'id': 3, 'title': '震惊了.....'},
                    {'id': 4, 'title': '震惊了.....'},
                
                return Response(data)
    
  3. 应用场景

    参与前后端分离项目或为APP编写接口时
    
  4. 获取前端提交的数据

    request.data //自动去request.body中取值并将字节转化为字符再反序列化为json数据
    

DRF为我们提供的功能

-解析器:解析请求体中的数据,将其变成我们想要的数据格式并放在request.data中
-视图:继承APIView,在内部APIView继承了Django的View
-序列化:对对象或对象列表(queryset)进行序列化操作以及对表单进行验证
-渲染器:将json数据友好的在页面上展示(内部根据请求设备的不同做不同的展示)

模拟浏览器发送请求使用的工具

postman
posted @ 2020-03-16 22:54  末兰岩  阅读(18)  评论(0编辑  收藏  举报