2017-12-02 1 views
0

@api_viewで装飾されたapiをテストしようとすると、手動でテストするときにレスポンスに一致しないフォーマットが返されます。DjangoレストフレームワークAPITestCaseがtofrmatを要求する

{ 
    "field": ["string_value"] 
} 

この問題を再現するには:フォーマットはこの1つのように見えるので、私はエラーが表示さ

{ 
    "field": "string value" 
} 

が、私は(テストから)投稿しようとすると:

私は次の形式を期待します
class Tests(rest_framework.test.APITestCase): 
    def test_api(self): 
     ... 
     response = self.client.post(url, data) 
     ... 
+0

'応答= self.client.post(URL、データ、フォーマットは= 'JSON')' –

+0

これが答えですが、私は私が追加する必要がありませんでしたが、他のプロジェクトを持っています形式は、なぜそうですか? –

+0

DRFパーサー設定の可能性が高いです。あなたの意見を見ずに本当に話すことはできません。 –

答えて

0

response = self.client.post(url, data, format='json')

あなたのコードにこれを追加してください。 format='json'の部分は、エンドポイントが受信するように設定されているため、重要です。あなたのエンドポイントは、あなたがそれを送信しているフォーマットを認識するのに十分なほどスマートではありませんが、あなたが設定したフォーマットになっているかどうかを認識しています:) /@apiviewparser_class=(JSONParser,))または@parser_classes((JSONParser,))を追加することによって、

settings.pyファイルでこの行を確認してください。

REST_FRAMEWORK = { 
    'DEFAULT_PARSER_CLASSES': (
    'rest_framework.parsers.JSONParser', 
    ) 
} 

http://www.django-rest-framework.org/api-guide/parsers/

関連する問題