练习:

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

作业:
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>

day71test的更多相关文章

随机推荐

  1. 2018-2-13-win10-uwp-上传Nuget-让别人用我们的库

    title author date CreateTime categories win10 uwp 上传Nuget 让别人用我们的库 lindexi 2018-2-13 17:23:3 +0800 2 ...

  2. python、Jupyter运行时间

    1.Python time time()方法 import time time_start=time.time() time_end=time.time() print('totally cost', ...

  3. ubuntu 权限不够,解决办法,无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)

    终端执行  sudo passwd root输入root 新密码执行命令  nano /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf末行添加   gr ...

  4. Python代码中func(*args, **kwargs)

    这是Python函数可变参数 args及kwargs *args表示任何多个无名参数,它是一个tuple **kwargs表示关键字参数,它是一个dict 测试代码如下: def foo(*args, ...

  5. [JZOJ4330] 【清华集训模拟】几何题

    题目 题目大意 也懒得解释题目大意了-- 正解 正解居然是\(FFT\)? 不要看题目的那个式子这么长,也不要在那个式子上下手. 其实我们会发现,不同的\((x_i-x_j,y_i-y_j,z_i-z ...

  6. 双线程DP

    1.传纸条 好像是一道普及组水题? //Twenty #include<cstdio> #include<iostream> #include<cstring> # ...

  7. 同步异步,异步回调,线程队列,线程时间Event

    同步异步-阻塞非阻塞 阻塞-非阻塞 指的是程序的运行状态 阻塞:当程序执行过程中遇到了IO操作,在执行IO操作时,程序无法继续执行其他代码,称为阻塞. 非阻塞:程序在正常运行没有遇到IO操作,或者通过 ...

  8. iOS开发之SceneKit框架--加载多个模型.dae/.scn文件

    1.通过SCNGeometry或子类SCNParametricGeometry创建 相关链接:iOS开发之SceneKit框架--SCNGeometry.h iOS开发之SceneKit框架--SCN ...

  9. error LNK1104: 无法打开文件“C:\Users\Administrator\Desktop\....\\xxxx.exe”

    1.错误原因:项目在在打开前已经打开了win32里面的程序,并且运行.  解决方法:关闭直接在win32中运行的程序,再点击调试 2.暂时不知道原因,打开程序还会报无权限创建可执行文件.如下图所示 解 ...

  10. Django rest framework (视图类详解)

    官网:https://www.django-rest-framework.org/api-guide/viewsets/ 在django rest framework 视图中一共有N个类 第一类:AP ...