练习02

作业

  • 建立一个视图类,完成一项渲染模块与解析模块的全局局部配置,在自己项目中自定义一下异常处理函数,并配置给项目
# 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

猜你喜欢

转载自www.cnblogs.com/Mcoming/p/12103866.html
今日推荐