Django- imageファイルの格納
Djangoで画像を扱いたいときの対応。
projectとしてportfolioを作成
applicationとしてblogを作成
blog/models.py
from django.db import models class MyPhotos(models.Model): title = models.CharFiled(max_length=20) image = models.ImageField(upload_to="blog/images/")
ImageFieldを使う際はpillowが必要なので以下を実行する
pip3 install pillow
blog/admin.py
from django.contrib import admin from .models import MyPhotos admin.site.register(MyPhotos)
portfolio/settings.py
~~(略)~~ INSTALLED_APPS = [ ~~(略)~~ "blog", # applicationを追加 ] ~~(略)~~ MEDIA_URL = "/media/" MEDIA_ROOT = os.path.join(BASE_DIR, "media")
portfolio/urls.py
from django.contrib import admin from django.urls import path from django.conf.urls.static import static from django.conf import settings urlpatterns = [ path("admin/", admin.site.urls), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
1 .管理画面からblogアプリケーションを新規登録
2. 画像ファイルをアップロード
3. 該当するファイルをクリック
4. 画像が表示されればOK
管理画面からアップロードした画像ファイルは、rootフォルダ(manage.pyがあるフォルダ)にmediaフォルダへ格納されている