py-py’s blog

何か書くよ

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フォルダへ格納されている