Djangoの管理画面で画像をアップロードする方法

Djangoの管理画面で画像アップロード機能を追加するには、以下の手順を参考にしてください。
モデルの定義:まず、画像を保存するためのモデルを定義します。この例では Image モデルを作成します。

from django.db import models

class Image(models.Model):
    title = models.CharField(max_length=255)
    image = models.ImageField(upload_to='images/')

ImageField を使用して、画像を保存するフィールドを定義します。upload_to はアップロードされた画像が保存されるディレクトリを指定します。設定の変更:イメージアップロードをサポートするために、必要なライブラリをインストールして設定を変更する必要があります。

pip install pillow

Pillow は、Djangoの ImageField で画像処理を行うためのライブラリです。admin.pyの設定:admin.py ファイルに画像をアップロードするための設定を追加します。

from django.contrib import admin
from .models import Image

@admin.register(Image)
class ImageAdmin(admin.ModelAdmin):
    list_display = ['title', 'image']

メディアファイルの設定:プロジェクトの設定ファイル(settings.py)にメディアファイルの設定を追加します。

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

さらに、urls.py ファイルにもメディアファイルの設定を追加します。

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... その他のURL設定 ...
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

このコードは、DEBUG モードが True のとき(つまり、開発環境で動作しているとき)にのみ、メディアファイルをハンドルします。本番環境では、通常、ウェブサーバー(例: Nginx や Apache)がメディアファイルの配信を担当します。

マイグレーションとデータベースの更新:新しく追加したモデルのためのマイグレーションファイルを作成し、データベースを更新します。

python manage.py makemigrations
python manage.py migrate

これで、Djangoの管理画面から画像をアップロードできるようになりました。管理画面にアクセスして、新しく作成した Image モデルのエントリを追加することで、画像をアップロードすることができます。

HTMLで表示

htmlでimgとしてコンテキストをセットした例です。

<img src="{{ img.image.url }}" alt="{{ img.title }}" width="300">

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です