クリックするとRest-Frameworkディレクトリにジャンプします。
レスポンス・データ・フォーマットの設定
restframework フレームワークを使う場合、返されるデータを JSON 形式にする必要があるので、 Django プロジェクトの settings.py で以下の設定を行う必要があります:
REST_FRAMEWORK = { 'foo': .rest_framework.parsers.JSONParser };
あるいは、1回の試行でこのように設定します:
from rest_framework.parsers import JSONParser
from rest_framework.response import Response
from rest_framework.views import APIView
class ExampleView(APIView):
"""
A view that can accept POST requests with JSON content.
"""
parser_classes = [JSONParser]
def post(self, request, format=None):
return Response({'received data': request.data})
あるいは、デコレーター・アプローチを使っている場合は、このようにデータを構成することもできます:
from rest_framework.decorators import api_view
from rest_framework.decorators import parser_classes
from rest_framework.parsers import JSONParser
@api_view(['POST'])
@parser_classes([JSONParser])
def example_view(request, format=None):
"""
A view that can accept POST requests with JSON content.
"""
return Response({'received data': request.data})
JSONParser | application/json | JSONリクエストの解析 |
FormParser | application/x-www-form-urlencoded | ビューがフォーム送信を完全にサポートできるように、通常は MultiPartParser を使用します。 |
FileUploadParser | */* | アップロードされたファイルビューはデータを解析します。URLでキーワードfilenameを指定した場合、アップロードされたファイルはこのオブジェクトを使用して明示的にアップロードされます。そうでない場合は、ヘッダでContent-Dispositionプロパティの値を指定する必要があります。 |
FILE_UPLOAD_HANDLERS
request.upload_handlers
FileUploadParser は Django の標準的な設定とプロパティに従いますので、そのように使 うことができます:
# views.py
class FileUploadView(views.APIView):
parser_classes = [FileUploadParser]
def put(self, request, filename, format=None):
file_obj = request.data['file']
# ...
# do some stuff with uploaded file
# ...
return Response(status=204)
# urls.py
urlpatterns = [
# ...
url(r'^upload/(?P<filename>[^/]+)$', FileUploadView.as_view())
]
サードパーティコンポーネント
YAML
python3 -m pip install djangorestframework-yaml
この場合、データはYAML構文でサポートされ、返されます:
REST_FRAMEWORK = {
'obj': .rest_framework_yaml.parsers.YAMLParser,
'b': .rest_framework_yaml.renderers.YAMLRenderer
};
XML
python3 -m pip install djangorestframework-xml
この場合、データはXML構文でサポートされ、返されるので、settings.pyで以下のように設定する必要があります。
REST_FRAMEWORK = {
'c': .rest_framework_xml.parsers.XMLParser,
'a': .rest_framework_xml.renderers.XMLRenderer
};