[Django3.0]メディアファイルの取り扱い

プロジェクトルートにmediaフォルダを作成します。

settings.pyでmediaルートを設定します。os.path.joinの第二引数はアプリケーションのフォルダ、第三引数はフォルダ名(media)です。

settings.py

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

STATIC_ROOT = os.path.join(BASE_DIR, 'sales', 'static')
STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
	// 省略
]


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

mediaルートに画像を置きます。

templateで呼び出してみましょう。

<img src="/media/img/qrcode.png" width=100 height=100>

うまく表示されています。

さて、次はどこでqrコードを生成するかです。
商品生成時にidで作りたいが、idはmysql側で付与されるから、
*save() とした後に以下のようにすれば良いのかな。
*.objects.order_by(“id”).last()