2017-04-15 4 views
0

クライアントを使用して関数に辞書を渡したいと思います。それは以下のようになります。私は持っていると私の見解でSimpleUploadedFileはPOSTしません

response = self.client.post(
     '/upload_image/', {'image': image, 'tags': ['orion', ]}) 

が、それはデータの投稿:

print(request.POST) 
image = request.POST['image'] 
tags = reguest.POST['tags'] 

がrequest.POST [ 'イメージ']にMultiValueDictKeyErrorがあります。

<QueryDict: {'tags': ['orion']}> 

画像オブジェクトされています:

print(request.POST)

辞書がどのように見えることを示して

image = SimpleUploadedFile(
      'kitties.png', b'kitties_in_boxes', 'image/png') 

私は(たとえば文字列)を画像として何かを渡すときので、それはイメージオブジェクトについてです、それをうまくいく。

イメージのアップロード機能をテストできる別の方法があると思いますが、なぜこれが機能しないのか誰かが知っていますか?

+0

フォームのenctypeを確認するには、enctype = "multipart/form-data"でなければなりません – Quentin

+0

@Quentinフォームがない場合、私は何ができますか?それは唯一のテストメソッドです - ビューメソッド – Ginko

答えて

1

Djangoはアップロードされたファイルを他の送信データと区別します。 tagsキーはrequest.POSTに存在しますが、imagerequest.FILESになります。私が見ることから、あなたがやっていることは、テストクライアントとのファイルアップロードをテストする正しい方法です。

More info on forms and files in django

+0

よろしく、とにかくありがとうございます。私が確認しておきます、チェックします – Ginko

関連する問題