Django APIでAWS S3にファイルをアップロードするAPIのサンプル

タイトル: Django APIAWS S3にファイルをアップロードするAPIのサンプル

はじめに、今回はDjangoを使用してAWS S3にファイルをアップロードするAPIを作成する方法について紹介します。AWS S3は、クラウドストレージサービスであり、ファイルの保存や公開、バックアップなど幅広い用途に利用されます。

まず、Djangoプロジェクトを作成しましょう。ターミナルで以下のコマンドを実行します。

```

$ django-admin startproject file_upload_api

```

次に、Djangoアプリケーションを作成します。ターミナルで以下のコマンドを実行します。

```

$ cd file_upload_api

$ python manage.py startapp file_upload

```

作成したアプリケーションをDjangoプロジェクトに組み込むため、`file_upload_api/settings.py`ファイルを開き、`INSTALLED_APPS`リストに`'file_upload'`を追加します。

```python

INSTALLED_APPS = [

...

'file_upload',

]

```

次に、`file_upload/models.py`ファイルを作成し、ファイルのアップロード先となるモデルを定義します。

```python

from django.db import models

class File(models.Model):

name = models.CharField(max_length=100)

file = models.FileField(upload_to='uploads/')

uploaded_at = models.DateTimeField(auto_now_add=True)

def __str__(self):

return self.name

```

上記のモデルでは、`name`フィールドにファイル名、`file`フィールドにアップロードされたファイル、`uploaded_at`フィールドにアップロードされた日時を保存します。

次に、`file_upload/serializers.py`ファイルを作成し、モデルをシリアライズするためのシリアライザを定義します。

```python

from rest_framework import serializers

from file_upload.models import File

class FileSerializer(serializers.ModelSerializer):

class Meta:

model = File

fields = '__all__'

```

次に、`file_upload/views.py`ファイルを作成し、APIのビューを定義します。

```python

from rest_framework.views import APIView

from rest_framework.response import Response

from file_upload.serializers import FileSerializer

class FileUploadAPIView(APIView):

def post(self, request, format=None):

serializer = FileSerializer(data=request.data)

if serializer.is_valid():

serializer.save()

return Response(serializer.data, status=201)

return Response(serializer.errors, status=400)

```

上記のコードでは、`FileUploadAPIView`クラス内に`post`メソッドを定義し、ファイルのシリアライザを作成してデータのバリデーションを行った後、データを保存します。

最後に、`file_upload_api/urls.py`ファイルを開き、APIのURLパスを定義します。

```python

from django.urls import path

from file_upload.views import FileUploadAPIView

urlpatterns = [

path('api/upload/', FileUploadAPIView.as_view(), name='file-upload'),

]

```

これでAPIの設定が完了しました。

最後に、Djangoプロジェクトを実行します。

```

$ python manage.py runserver

```

以上で、Django APIAWS S3にファイルをアップロードするAPIのサンプルが完成しました。このAPIを使用することで、簡単にファイルのアップロードと保存が行えます。

ぜひ、このサンプルを参考にして、自身のプロジェクトに応用してみてください。