zoukankan      html  css  js  c++  java
  • day71test

    练习:

    视图类渲染,解析, 异常配置:

    作业:    
        1.、简单过过请求模块的源码流程,建立一个视图类,完成一项渲染模块与解析模块的全局,局部配置
    
    <span class="hljs-number">2.</span>、在自己项目中自定义一下异常处理函数,并配置给项目</code></pre>
    

    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] #局部渲染配置

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get</span><span class="hljs-params">(self,request,*args,**kwargs)</span>:</span>
        <span class="hljs-keyword">return</span> Response(<span class="hljs-string">'drf get ok'</span>)
    
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">post</span><span class="hljs-params">(self,request,*args,**kwargs)</span>:</span>
        <span class="hljs-keyword">return</span> Response(<span class="hljs-string">'drf post ok'</span>)
    

    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(<span class="hljs-string">r'^admin/'</span>, admin.site.urls),
        url(<span class="hljs-string">r'^api/'</span>, include(<span class="hljs-string">'api.urls'</span>)),
    ]
    

    api.urls.py:

    <span class="hljs-keyword">from</span> django.conf.urls <span class="hljs-keyword">import</span> url
    <span class="hljs-keyword">from</span> . <span class="hljs-keyword">import</span>  views
    urlpatterns = {
        url(<span class="hljs-string">r'^student/$'</span>,views.Student.as_view()),
    }</code></pre>
    
  • 相关阅读:
    ArcPad 10 的安装部署
    各种机械键盘轴的差别,究竟什么轴好
    default argument given of parameter 的问题
    Quartz中时间表达式的设置-----corn表达式
    图像切割之(一)概述
    SMTP协议分析
    Android学习小Demo(19)利用Loader来实时接收短信
    qml动画控制器AnimationController
    httpclient 文件上传
    Java习题10.24
  • 原文地址:https://www.cnblogs.com/gfhh/p/12093900.html
Copyright © 2011-2022 走看看