Djangoで画像アップロード機能作ってみる
概要
Djangoで画像アップロードから、S3への保存までをやってみた。
ざっくり手順
- モデルの作成: 画像を保存するためのモデルを作成。
- フォームの作成: 画像アップロード用のフォームを作成。
- APIの作成: 画像アップロードと成功ページのAPI作成。
- HTMLファイルの作成: 画像アップロード用のテンプレートと成功ページのHTMLファイルを作成。
- URLパターンの設定: APIをURLにマッピング。
- メディアファイルの設定: メディアファイルを管理するための設定を追加。
実際にやってみる
今回は食事メニューの画像をアップする。
1.モデルの作成
imageのところが特殊。
ローカルのimages/ディレクトリにアップした画像が保存されていく。
2.フォームの作成
Djangoのフォームクラスを作成。
3.APIの作成
formクラスを用いて画像をDBに保存。
4.HTMLファイルの作成
upload画面。
成功画面。
5.URLパターンの設定
urls.pyで該当のAPIにマッピング。
26~のは開発環境の時、urlに画像保存先のpathを追加するもの。
これでAPIが走るように。
6.メディアファイルの設定
*メディアファイルとは
画像、動画、音声ファイルとかユーザがWEBアプリにあげるファイルのこと
Djangoではメディアファイルを管理するため設定が必要
settings.pyにファイル保存先の設定追記。
今回はS3をするため、上記指定。
画像アップしてみる
上記フォームより、画像をアップ。
各種libraryがないとAPIでエラーを吐くのでインストールする。(django-storages等)
images/ディレクトリに画像が登録されていることを確認。
DBにも登録されていること確認。(Django管理画面からの確認はadmin.pyへの追記が必要)
デプロイすれば、S3上で画像が保存される。