- 安装:pip install djangorestframework
- 注意:此处可能会出现网络代理的问题:ValueError: check_hostname requires server_hostname
- 我也是搞了好久,开了VPN才下载安装成功
- 注册:
-
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', # 注册rest_framework 模块 ]
-
2、请求与响应
- Request:REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。
- request.data 返回解析后的请求体数据,与request.POST和request.FILES属性类似,但具有以下的特性:
- 包含了解析之后的文件和非文件数据
- 包含了对POST、PUT、PATCH请求方式解析后的数据
- 利用了REST framework的parsers解析器,不仅支持表单类型数据,也支持JSON数据
- request.query_params与request.GET相同,只是更改了名称
- Response:REST framework提供了一个响应类Response,使用该类构造响应对象时,响应的具体数据内容会被转换(render渲染器)成符合前端需求的类型。
- reat_framework.settings 中查找所有的drf默认配置项:
-
REST_frameWORK = {
'DEFAULT_RENDERER_CLASSES': [ # 默认响应渲染类
'rest_framework.renderers.JSONRenderer', # json渲染器
'rest_framework.renderers.TemplateHTMLRenderer', # 浏览器API渲染器
],
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser',
],
}
- 返回构造:
-
def __init__(self, data=None, status=None,
template_name=None, headers=None,
exception=False, content_type=None): - data:只需传递python的内建类型数据即可,REST framework会使用renderer渲染器处理data
- status:状态码,默认为200;
- template_name:模板名称,如果使用 HTMLRenderer 时需指明;
- headers:用于存放响应头信息的字典;
- content_type:响应数据的Content-Type,通常此参数无需传递,REST framework会根据前端所需类型数据来设置该参数。
3、视图类
- request.data 返回解析后的请求体数据,与request.POST和request.FILES属性类似,但具有以下的特性:
- 包含了解析之后的文件和非文件数据
- 包含了对POST、PUT、PATCH请求方式解析后的数据
- 利用了REST framework的parsers解析器,不仅支持表单类型数据,也支持JSON数据
- request.query_params与request.GET相同,只是更改了名称
- reat_framework.settings 中查找所有的drf默认配置项:
-
REST_frameWORK = { 'DEFAULT_RENDERER_CLASSES': [ # 默认响应渲染类 'rest_framework.renderers.JSONRenderer', # json渲染器 'rest_framework.renderers.TemplateHTMLRenderer', # 浏览器API渲染器 ], 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', 'rest_framework.parsers.FormParser', 'rest_framework.parsers.MultiPartParser', ], }
-
- 返回构造:
-
def __init__(self, data=None, status=None, template_name=None, headers=None, exception=False, content_type=None): - data:只需传递python的内建类型数据即可,REST framework会使用renderer渲染器处理data
- status:状态码,默认为200;
- template_name:模板名称,如果使用 HTMLRenderer 时需指明;
- headers:用于存放响应头信息的字典;
- content_type:响应数据的Content-Type,通常此参数无需传递,REST framework会根据前端所需类型数据来设置该参数。
-
- 两个视图基类:
- APIVIew:from rest_framework.views import APIView
- APIView 与 View不同:
- APIView:return Response() 参数如上
- View: return HTTPResponse() 或 return JSonResponse()
- APIView 与 View不同:
- GenericAPIView[通用视图类]
- APIVIew:from rest_framework.views import APIView
- 五个视图扩展类:
- cd
- cd
- cd
- cd
- cd
- GenericAPIView的视图子类
- cd视图集ViewSet
- cf
- vf
- 使用:
- 视图集中附加action的声明
- 路由router形成URL的方式



