【1119 | Day62】drf之渲染模块
一、渲染模块
根据用户请求URL
或用户可接受的类型
,筛选出合适的渲染组件。
用户请求URL
http://127.0.0.1:8000/test/?format=json
http://127.0.0.1:8000/test.json
二、内置渲染器
通过源码,我们可以知道渲染内容主要是JSONRenderer
、BrowsableAPIRenderer
//导入
from rest_framework.renderers import JSONRenderer
from rest_framework.renderers import BrowsableAPIRenderer
JSONRenderer:
- 显示json格式
- 访问URL
http://127.0.0.1:8000/test/?format=json http://127.0.0.1:8000/test.json http://127.0.0.1:8000/test/
BrowsableAPIRenderer:
- 默认显示格式,可以修改它的html文件
- 访问URL
http://127.0.0.1:8000/test/?format=api http://127.0.0.1:8000/test.api http://127.0.0.1:8000/test/
三、局部渲染
局部配置:
可以在视图类中通过renderer_classes
类属性对该视图的数据响应渲染做配置。
在我们定义基础APIView的类添加renderer_classes = [JSONRenderer]
这样网页就不会出现渲染只显示js数据。
例如:
class UserAPIView(APIView):
//响应的渲染模块
renderer_classes = [JSONRenderer]
def get(self, request, *args, **kwargs):
print(request.query_params)
data = {
'status': 0,
'msg': 'get ok',
'results': [],
'token': '123.12321.231'
}
return Response(
data=data,
status=status.HTTP_200_OK,
headers={'Token': '123as.masd21.asd213sd'},
content_type='application/json' # 默认就是application/json
)
四、全局渲染
全局配置:在settings.py
可以在项目配置文件的drf配置中通过DEFAULT_RENDERER_CLASSES
对该视图的数据响应渲染做配置。
例如:
# drf配置
REST_FRAMEWORK = {
# 响应的渲染模块
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser', # 'application/json'
'rest_framework.parsers.FormParser', # 'application/x-www-form-urlencoded'
'rest_framework.parsers.MultiPartParser' # multipart/form-data
],
}
注意:
如果一个视图类在有全局配置下,还进行了局部配置,优先走自己的局部配置。
核心:
可以全局和局部配置视图类支持的结果渲染:默认可以json和页面渲染,学习该模块的目的是开发可以全局只配置json方式渲染。