ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DRF练习

2019-12-30 16:56:39  阅读:287  来源: 互联网

标签:exception 练习 rest framework urls import response DRF


DRF 小练习

"""
1、新建一个django项目,定义一个Car类,有name字符串属性,color整型选择属性(0:银色,1:黑色,2:红色,3:灰色),price全精度小数类型,image图片文件类型,brand字符串类型

2、基于ModelSerializer类,完成Car资源的单查,群查,单增接口
    序列化:显示车名,车的颜色,车的价格,车的海报,车的品牌
    反序列化:必须提供车名,车的价格,车的品牌(车的匹配需要二次确认re_brand),车的颜色默认为银色(可以提供),车的海报不需要提供(默认为空)
"""

settings.py

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', 
}

views.py

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')

exception.py

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

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()),
    }

标签:exception,练习,rest,framework,urls,import,response,DRF
来源: https://www.cnblogs.com/jinhongquan/p/12120516.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有