作业
- 建立一个视图类,完成一项渲染模块与解析模块的全局局部配置,在自己项目中自定义一下异常处理函数,并配置给项目
# 1. settings文件中:
REST_FRAMEWORK = {
# 全局配置解析模块
'DEFAULT_PARSER_CLASSES':[
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
],
# 全局配置异常模块
'EXCEPTION_HANDLER':'app01.asdf.exception_handler'
}
# 2. 自定义异常模块
from rest_framework.views import exception_handler as my_exception_handler
from rest_framework.response import Response
def exception_handler(exc,context):
response = my_exception_handler(exc,context)
detail = f'{context.get("view")}-{context.get("request").method}-{exc}'
if not response:
response = Response({'detail':detail})
else:
response.data = {'detail':detail}
import sys
sys.stderr.write(response.data.get('detail'))
return response
# 3. 总路由中:
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^Books/',views.Books.as_view() ),
]
# 4. views文件:
from django.shortcuts import render
# Create your views here.
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.parsers import JSONParser,FormParser, MultiPartParser
from rest_framework.renderers import JSONRenderer,BrowsableAPIRenderer
from rest_framework import status
from app01 import xuliehua
from app01 import models
class Books(APIView):
def get(self,request,*args,**kwargs):
book_query = models.Book.objects.all()
print(111111)
book_ser = xuliehua.Bookser(book_query,many=True)
print(222222)
print(book_ser.data)
return Response({
'status':0,
'msg':'ok',
'result':book_ser.data
})
def post(self,request,*args,**kwargs):
print(333333)
book_ser = xuliehua.Bookser(data=request.data)
print(444444)
if book_ser.is_valid():
book_obj = book_ser.save()
response = Response(
data={
'status':0,
'msg':'post_ok',
'result': xuliehua.Bookser(book_obj).data
},
status = 200
)
else:
response = Response(
data={
'status': 1,
'msg': book_ser.errors,
},
status=500
)
return response