day 71ジョブ
7696 ワード
総ルートurlspy
ルーティングurlsを配布します.py
settings構成
表示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'))
]
ルーティングurlsを配布します.py
from django.conf.urls import url
from django.contrib import admin
from . import views
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^books/$', views.BookView.as_view()),
url(r'^books/(?P\d+)/$ ', views.BookView.as_view())
]
settings構成
# 'rest_framework'
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
],
'EXCEPTION_HANDLER': 'api.exception.exception_handler',
}
表示py
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.renderers import BrowsableAPIRenderer, JSONRenderer
from rest_framework.parsers import JSONParser, FormParser, MultiPartParser
class BookView(APIView):
#
RENDERER_CLASSES = [BrowsableAPIRenderer, JSONRenderer]
#
PARSER_CLASSES = [JSONParser, FormParser, MultiPartParser]
def get(self, request, *args, **kwargs):
return Response(
data={
'msg': 'view get ok'
}
)
応答サービス側異常処理の処理
# exception, exception_handler
from rest_framework.response import Response
from rest_framework.views import exception_handler as drf_exception_handler
def exception_handler(exc, context):
response = drf_exception_handler(exc, context)
detail = '%s - %s - %s' % (context.get('view'), context.get('request').method, exc)
if not response:
response = Response({'detail': detail})
else:
response.data = {'detail': detail}
return response