#やりたいこと
DjangoのREST frameworkを使ってAPIサーバの検証構築をしています。
現在、GETメソッドのロジックは直ぐに作ることが出来ましたが
POSTメソッドのロジックが上手く出来ません。
やりたいことは、POSTメソッドで送信されたCSVファイルを受け取りたいのですが、下記のエラーが表示されます
#実行結果とエラー画面
・GET
> curl -k "http://127.0.0.1:8000/api/v1/test" "get"
・POST
> curl -k -X POST -F "filename=@data/test.csv" "http://127.0.0.1:8000/api/v1/test" TypeError: post() takes at least 3 arguments (2 given) [14/Nov/2016 11:38:18] "POST /api/v1/test HTTP/1.1" 500 18480
(カールの指定方法が間違っている?)
#ロジック
・api01/views.py
# !/usr/bin/env python # -*- coding: utf-8 -*- from django.shortcuts import render from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.parsers import FileUploadParser from api01.serializers import TestSerializer class APIClaas(APIView): parser_classes = (FileUploadParser, ) def get(self, request, format=None): return Response('get') def post(self, request, filename, format=None): post_file = request.data['file'] return Response(post_file.name)
・api01/serializers.py
from rest_framework import serializers class TestSerializer(serializers.Serializer): str = serializers.CharField(max_length=256, required=False)
・api01/urls.py
from django.conf.urls import url from . import views from rest_framework.urlpatterns import format_suffix_patterns urlpatterns = [ url(r'^test', views.APIClaas.as_view()), ] urlpatterns = format_suffix_patterns(urlpatterns)
・pj/urls.py
from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ url(r'^api/v1/', include('api01.urls')), url(r'^admin/', admin.site.urls), ]
・pj/settings.py
<省略> REST_FRAMEWORK = { # Use Django's standard `django.contrib.auth` permissions, # or allow read-only access for unauthenticated users. 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.AllowAny' ], 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.FileUploadParser' ] }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。