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>
    
  • 相关阅读:
    生活随笔1
    CSS学习笔记
    20174320 王灏汉《网络对抗技术》Exp9 Web安全基础
    20174320 王灏汉《网络对抗技术》Exp8 Web基础
    20174320 王灏汉《网络对抗技术》Exp7 网络欺诈防范
    20174320 王灏汉《网络对抗技术》Exp6 MSF基础应用
    20174320 王灏汉《网络对抗技术》Exp5 信息搜集与漏洞扫描
    20174320 王灏汉《网络对抗技术》Exp4 恶意代码分析
    20174320 王灏汉《网络对抗技术》 Exp3 免杀原理与实践
    20174320 王灏汉 《网络对抗技术》Exp2 后门原理与实践
  • 原文地址:https://www.cnblogs.com/gfhh/p/12093900.html
Copyright © 2011-2022 走看看