반응형
이 ImageField에 이미지를 저장할 수 없습니다.
데이터를 다시 보내는 경우 :
{
"image": ["No file was submitted. Check the encoding type on the form."]
}
model.py
class MyPhoto(models.Model):
owner = models.ForeignKey('auth.User', related_name='image')
image = models.ImageField(upload_to='photos', max_length=254)
serializers.py
class PhotoSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = MyPhoto
fields = ('url', 'id', 'image', 'owner')
owner = serializers.Field(source='owner.username')
view.py
class PhotoList(APIView):
permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly)
def get(self, request, format=None):
photo = MyPhoto.objects.all()
serializer = PhotoSerializer(photo, many=True)
return Response(data=serializer.data, status=status.HTTP_200_OK)
def post(self, request, format=None):
serializer = PhotoSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def pre_save(self, obj):
obj.owner = self.request.user
class PhotoDetail(APIView):
permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly)
def get_object(self, pk):
try:
return MyPhoto.objects.get(pk=pk)
except MyPhoto.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
photo = self.get_object(pk)
serializer = PhotoSerializer(photo)
return Response(serializer.data)
def put(self, request, pk, format=None):
photo = self.get_object(pk)
serializer = PhotoSerializer(photo, data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk, format=None):
photo = self.get_object(pk)
photo.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
def pre_save(self, obj):
obj.owner = self.request.user
url.py
urlpatterns = patterns('',
url(r'^$', 'main.views.main_page'),
url(r'^api/photo/$', views.PhotoList.as_view(), name='myphoto-list'),
url(r'^api/photo/(?P<pk>[0-9]+)/$', views.PhotoDetail.as_view(), name='myphoto-detail'),)
컬
curl -X POST -S -H 'Content-Type: application/json' -u "michael:bush_pass" --data-binary '{"owner":"/users/1/", "image":"/Users/test/Downloads/1383310998_05.jpg"}' 127.0.0.1:8000/api/photo/
해결 방법
post
및 put
핸들러의 직렬 변환기 생성자에 대한 request.FILES
인수가 누락 된 것 같습니다.
serializer = PhotoSerializer(data=request.DATA, files=request.FILES)
참조 페이지 https://stackoverflow.com/questions/20303252
반응형
'파이썬' 카테고리의 다른 글
파이썬 IndexError : 튜플 인덱스가 범위를 벗어남 ----- Python (0) | 2020.12.30 |
---|---|
파이썬 Pandas 데이터 프레임에서 열 수를 검색하려면 어떻게해야합니까? (0) | 2020.12.30 |
파이썬에서 공백으로 문자열을 고정 길이로 채우는 방법은 무엇입니까? (0) | 2020.12.30 |
파이썬 Python에서 특정 시간까지 스레드를 절전 모드로 전환하려면 어떻게해야합니까? (0) | 2020.12.30 |
파이썬 카운터 출력 포맷 (0) | 2020.12.30 |
댓글