🤨

【Python】Strawberry0.243.0以降でのmultipart file uploadsのDjango対応

2024/12/01に公開

概要

PythonのGraphQLライブラリStrawberryを、Djangoで使う「strawberry-graphql-django」のライブラリを更新したところファイルアップロードができなくなりました。原因はStrawberry0.243.0でファイルアップロード周りの更新が入っていたらしく、対応についてメモ書きします。

前提

  • 使用したstrawberry-graphql-djangoのバージョンは0.50.0です。なお、strawberry-graphql-djangoのバージョンのどれで、Strawberry0.243.0が取り込まれたかは未確認です。

対応

v0.243.0 Breaking Changesのページにある通り、Djangoではpathの設定時にviewへcsrf_exemptを付与した上で、multipart_uploads_enabledの設定を追加する必要があります。

実装サンプル

urls.py
from django.urls import path
from django.views.decorators.csrf import csrf_exempt

from placeNoteApi2024.graphql.graphql_view import PlaceNoteGraphQLView
from placeNoteApi2024.schema import schema

urlpatterns = [
    path(
        "graphql/",
        csrf_exempt(
            PlaceNoteGraphQLView.as_view(schema=schema, multipart_uploads_enabled=True)
        ),
    ),
]

Discussion