2017-04-15 4 views
0

Client를 사용하여 함수에 사전을 전달하고 싶습니다. 그것은 그 모양 : 내가 가지고에 내 시야에서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