🐙

Django Pythonanywhereでmediaファイルを表示する

2023/01/24に公開

はじめに

Djangoで本番環境に移行する際、mediaファイルにエラーが出た同志はたくさんいるのではないだろうか。ここではpythonanywhereでdjangoを使う際に私が活用した外部ツールを紹介する。

Debug=Falseではmediaファイルが表示されない

DEBUG=True と設定すると、本来Webサーバーを経由してstaticやmediaのファイルを読み込むところをdjangoアプリ内のstaticとmediaを見に行くようになっている。しかし、Debug=Falseになるとこの設定は無効になるためパスを繋げてあげないといけない。

公式ドキュメント

そこで簡単に使えるのがcloudinaryと言うクラウドサービスだ。無料で使える。
以下手順

1.アカウントを登録

無料プランで十分使える

2.API取得 ダッシュボードに以下の情報があるのでコピペする。

'CLOUD_NAME' : '',
'API_KEY' : '',
'API_SECRET' : '',

3.ライブライリ

django-cloudinary-storageとPillowをインストール

4.設定

settings.pyにて
INSTALLED_APPS にcloudinaryとcloudinary_storageを追加

INSTALLED_APPS = [
    ......
    'cloudinary', # 追加
    'cloudinary_storage', # 追加
    ......
]

一番下のmediaファイルのところに以下を追加

DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.MediaCloudinaryStorage'
CLOUDINARY_STORAGE = {
    'CLOUD_NAME' : '',
    'API_KEY' : '',
    'API_SECRET' : '',
    'API_PROXY': 'http://proxy.server:3128',
}

.envにファイルに記述した方が好ましい。

以上でcloudinaryにmediaファイルは保存される。pythonanywhereの無料バージョンからdjangoの管理画面でmediaファイルをcloudinaryに送るためにはproxyを上記のように書くことが好ましいとされる情報が多々あったが私はうまくいかなかった。

Discussion