LoginSignup
1
0

More than 1 year has passed since last update.

Djangoの本番環境(DEBUG = False)にて、mediaに保存した画像が表示されない問題を解消

Posted at

はじめに

ローカル環境(DEBUG = True)では、mediaに保存されている画像が表示出来るのに、本番環境では表示することが出来ないという問題に直面した。

結論から言うと、サードパーティー製のクラウドストレージ(例:AWSなど)の1つである
cloudinary.comを利用することで解決したので、自分の行った手順を紹介したいと思う。
※djangoだけで、mediaに保存された画像を表示することは可能かもしれないが、調べきることが出来なかった。

また、
MEDIA files in production — Django
このサイトの内容を参考にしたので、英文に慣れている方はこちらの内容を参考にされると良いと思う。

注意:今回書いている記事は、ローカル環境では、mediaに保存された画像を表示出来ていることを前提としています。

Cloudinaryで行う手順

まず、cloudinary.comへの登録、ログインを行う。そしたら、Welcome to Cloudinary!と書かれているページになると思う。

そのページにある、Configure your SDKと書かれている部分をクリックし、自分の

cloud_name
api_key
api_secret

を確認する。これらは、この後にDjango内での設定に必要となる。

Djangoで行う手順

初めにターミナルにて、
pip install django-cloudinary-storage
を行う。

そして、Djangoのsettings.py

settings.py
INSTALLED_APPS = [
		...
    'cloudinary_storage',
    'cloudinary',
]

を追記する。

続いて、settings.pyの好きな場所に

settings.py
CLOUDINARY_STORAGE = {
    'CLOUD_NAME': '<your_cloud_name>',
    'API_KEY': '<your_api_key>',
    'API_SECRET': '<your_api_secret>',
}

を追加する。このCLOUD_NAME、API_KEY、API_SECRETには先程Cloudinary.comで確認を行なった自分のものを書く。

最後に、

settings.py
DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.RawMediaCloudinaryStorage'
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

をsettings.pyの最後に追加することでおしまい。

管理画面などから、画像を追加するとCloudinaryのデータベースに送られる。
そして、画像はそこから取得されるようになり、本番環境(DEBUG = False)でもローカル環境のように画像を表示することが可能になったと思う。

おわりに

本番環境を想定した画像の表示を行う方法が書かれていたサイトが少なかったので、自身の解決法を共有することで、少しでも役に立てると嬉しいと考えています。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0