やりたいこと
画像ファイルをローカルにアップロードするところまで一旦完成している前提。
Cloudinaryに画像をアップロードしてRenderにデプロイする。
※ 対象ファイルは画像のみです。ほかの形式だとアップできてもRenderで表示できませんでした。
Cloudinaryにサインアップ
まず
https://cloudinary.com/ のSign up for freeからサインアップします。(アカウント作成)
ログインするとダッシュボードがあり、自分の情報が見えます。API接続に必要になる情報もここで確認ができます。
環境変数
- LOUDINARY_CLOUD_NAME → dashboard > Cloud name から取得します
- その他は「Go to API Keys」からAPI のページで取得します
LOUDINARY_CLOUD_NAME
CLOUDINARY_API_KEY
CLOUDINARY_API_SECRET
.env ファイルに設定
LOUDINARY_CLOUD_NAME=***
CLOUDINARY_API_KEY=************
CLOUDINARY_API_SECRET=********
settings.py に記述
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
'django_cleanup.apps.CleanupConfig', # django-cleanup ファイル削除のため追加
+ # cloudinaryの追加
+ 'cloudinary',
+ 'cloudinary_storage',
# アプリ
'app',
]
...
# 末尾に追加
""" 画像用 """
MEDIA_URL = '/media/' # 添付ファイル
# DEBUGがTrueだったらMEDIA_ROOT、FalseならCloudinaryにアップする
+ if DEBUG:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 添付ファイル
+ else:
+ CLOUDINARY_STORAGE = {
+ 'CLOUD_NAME': env('CLOUDINARY_CLOUD_NAME'), # cloudinaryのCLOUD_NAME
+ 'API_KEY': env('CLOUDINARY_API_KEY'), # cloudinaryのAPI_KEY
+ 'API_SECRET': env('CLOUDINARY_API_SECRET'), # cloudinaryのAPI_SECRET
+ }
+ DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.MediaCloudinaryStorage'
ローカルで試す時は、一旦
if DEBUG: → if not DEBUG:
にしてcloudinary にアップできるか確認してみる。
Cloudinary 画像保存場所
左メニューAsetts > Media Library
モジュールのインストール
- requirements.txt に書く
- ターミナルで pip install -r requirements.txt コマンド実行
django==4.2.18
dj-database-url==2.1.0
dj-static==0.0.6
python-decouple==3.8
django-environ==0.11.2
gunicorn==21.2.0
psycopg2-binary==2.9.9
whitenoise==6.6.0
django-cleanup==9.0.0
+ cloudinary==1.44.0
+ django-cloudinary-storage==0.3.0
pip install -r requirements.txt
最新のバージョンを調べるには「モジュール名 pip」で検索する
例)https://pypi.org/project/django-cloudinary-storage/
デプロイする
GitHubにpush
renderデプロイ
→ 失敗するので、環境変数 Environment を追記して、saveデプロイ
参考
参考サイト