作业:
1.、简单过过请求模块的源码流程,建立一个视图类,完成一项渲染模块与解析模块的全局,局部配置
2.、在自己项目中自定义一下异常处理函数,并配置给项目
全局配置:
REST_FRAMEWORK = {
# 解析模块
'DEFAULT_PARSER_CLASSES' : {
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParse',
'rest_framework.parsers.JSONParser',
},
#渲染模块
'DEFAULT_RENDERER_CLASSES': {
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
},
# 自定义配置异常模块
'EXCEPTION_HANDLER': 'api.exception.exception_handler',
}
视图类局部配置:
from rest_framework.parsers import JSONParser,FormParser,MultiPartParser
from rest_framework.renderers import JSONRenderer
from rest_framework.renderers import BrowsableAPIRenderer
from rest_framework.views import APIView
from rest_framework.response import Response
class Student(APIView):
parser_classes = [JSONParseer] #局部解析配置
renderer_classes = [JSONRenderer] #局部渲染配置
def get(self,request,*args,**kwargs):
return Response('drf get ok')
def post(self,request,*args,**kwargs):
return Response('drf post ok')
from rest_framework.views import exception_handler as drf_exception_handler
from rest_framework.response import Response
from rest_framework import status
def exception_handler(exc, context):
response = drf_exception_handler(exc, context)
detail = '%s-%s-%s' %(context.get('view'),context.get('request'),exc)
if not response:
response = Response({'detail':detail},, status=status.HTTP_500_INTERNAL_SERVER_ERROR, exception=True)
else:
response.data = {'detail':detail}
return response
urls.py:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api/', include('api.urls')),
]
api.urls.py:
from django.conf.urls import url
from . import views
urlpatterns = {
url(r'^student/$',views.Student.as_view()),
}