본문 바로가기
인간세상의 종말이 도래해따/오류

[Django] ImageField의 media 경로를 일부만 받아오는 오류

by 민곰 2024. 1. 16.
728x90

개발환경: Django + Reactjs + Mysql

 

# model.py
def get_image_path(instance, filename):
    today = now()
    return 'avatar/user/{}/{}/{}/{}_{}'.format(today.year, today.month, today.day, instance.name, filename)
    
class User(models.Model):
    ...

    avatar = ImageField(upload_to=get_image_path(), blank=True, null=True)

    ...

 

avatar란 필드에서 경로를 DB에 적힌 그대로 /avatar/2024/01/16/user1_image.png 로 가져오는 바람에 클라이언트에서 보여줄 때 제대로 경로를 가져오지 못하는 오류가 있었다.

 

오류: /avatar/user/2024/01/16/user1_image.png

정상: http://localhost:8000/media/avatar/user/2024/01/16/user1_image.png

 

view.py 에서 get 메소드의 Response객체를 구성해줄 때, context값을 추가해주니 해결되었다.

# view.py

class UserAPI(generics.RetrieveAPIView):
    permission_classes = [permissions.IsAuthenticated]
    serializer_class = UserSerializer

    def get(self, request):
        id = self.request.query_params.get('id')
        user = User.objects.get(id=id)
        user_history = UserHistory.objects.all().filter(user_id=id)
        print(user.id, user_history)
        return Response({
            "user": UserSerializer(user, context=self.get_serializer_context()).data,
            "history": UserHistorySerializer(user_history, many=True).data,
            "detail":"ok",
        }, status=status.HTTP_200_OK)

 

728x90

댓글