DXGX Consult - DjangoでGoogle Storageを簡単に使う

DjangoでGoogle Storageを簡単に使う

IT
2023年06月08日

画像のアップロードができないと嘆いていたのですが、ただ単に「keyの置き場所の指定が間違っていた」だけだったので、手順を記述しておきます。

Google App Engine + Google Storage の方法は皆さんCloud Runに移行しているからか、記事が古いケースが多いので、これが現時点の最新版だと思います。

1.django-storageをインストール

ローカルにもpipするのを忘れないようにしてください。(私、思い切り忘れて、collectstaticできないとわめいていました)

pip django-storage[google]

requirements.txtdjango-storage[google]=1.12.3を追加。

2.myproject下のsetting.pyを編集

INSTALLED_APPSは変更なしです。(storagesを加えるという記事も多いですが、必要ありません)

google cloud consoleで、IAMと管理にアクセスし、app engineのサービスアカウントを選択。キーからkeyをダウンロードします(.jsonファイルです)。そのjsonファイルをmyprojectの下、適当な場所に保存してください(今回は、secret/a.jsonに保存したとします)setting.pyに

# Storage

STORAGES = {default : {BACKEND: storages.backends.gcloud.GoogleCloudStorage},

staticfiles: {BACKEND: storages.backends.gcloud.GoogleCloudStorage}}

GS_BUCKET_NAME = {プロジェクト名}.appspot.com

GS_CREDENTIALS = service_account.Credentials.from_service_account_file( os.path.join(BASE_DIR,secret/a.json))

を追記。(私、secret/a.json を/secret/a.jsonと絶対パスにしており、気づくのに3日かかりました。。。)

3.collectstatic を実行して、static下のファイルをgoogle storageに移行。

なぜか私は一部ファイルが移行されなかったので、手動でそれらは移行しました。

これでgoogle storageがdefaultのストレージになりました。あとは好みの方法で画像や動画をアップロードしてください。私はckeditorを使っています。