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">