Django Academy · レッスン

ImageFieldとアップロードの配信

画像を扱い、開発環境でメディアにリンクします

レッスン 4/413 ステップ

「ImageFieldとアップロードの配信」はCoddyKit上の無料Django Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDjango Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Django Academyコースには全4レッスンが含まれています。

ImageFieldを使う理由

画像にはFileFieldではなくImageFieldを使用します。基本的な動作は同じですが、画像専用の検証やヘルパーが追加されます。

avatar = models.ImageField(upload_to='avatars/')

Pillowが必要

ImageFieldは画像を読み取るためにPillowライブラリを使用します。先にインストールしないと、マイグレーションを実行できません。🖼️

pip install Pillow

組み込みの検証

ImageFieldは、アップロードされたファイルが実際の画像かどうかを検証します。名前を変更した.txtファイルは、フォームの検証時に自動的に拒否されます。

幅と高さ

width_fieldとheight_fieldを設定すると、Djangoは保存時に各画像のサイズをそれぞれのカラムへ記録します。

photo = models.ImageField(
    upload_to='pics/',
    height_field='h', width_field='w')

画像を表示する

テンプレートで、imgタグの.urlにフィールドのURLを指定すると、保存した画像をユーザーに表示できます。

<img src="{{ profile.avatar.url }}" alt="avatar">

URLを安全に扱う

空のフィールドに対して.urlを呼び出すとエラーになります。画像がない場合にページがクラッシュしないよう、ifで確認してください。

{% if profile.avatar %}
  <img src="{{ profile.avatar.url }}">
{% endif %}

デフォルト値を指定する

フィールドにdefault画像のパスを指定すると、アップロードしていないユーザーにもプレースホルダーのアバターを表示できます。

models.ImageField(default='avatars/blank.png')

開発環境での配信

Djangoはメディアを自動では配信しません。開発環境では、プロジェクトのurlsでMEDIA_URLからMEDIA_ROOTへのルートを追加します。

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

DEBUGのときだけ

このメディア用ヘルパーは開発環境専用です。本番環境では実際のWebサーバーがアップロードを配信するため、DEBUGの確認でこのルートを囲んでください。

if settings.DEBUG:
    urlpatterns += static(...)

本番環境での配信

本番環境では、NginxやS3のようなストレージサービスにメディアを直接配信させます。すべての画像をDjango経由にすると遅くなります。

後からサムネイルを作る

サイズ違いの画像が必要ですか。準備ができたら、django-imagekitなどのライブラリでImageFieldにサムネイル生成機能を追加できます。

簡単な確認

ImageFieldが動作するために必要なものを確認しましょう。

まとめ

ImageFieldにはPillowが必要で、実際の画像を検証し、表示用の.urlを提供すること、そして本番環境ではDjangoの外部でメディアを配信すべきことを学びました。🎉

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「ImageFieldとアップロードの配信」レッスンは無料ですか?

はい。「ImageFieldとアップロードの配信」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Django Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Django Academyコースには全4レッスンが含まれています。

「ImageFieldとアップロードの配信」で何を学びますか?

画像を扱い、開発環境でメディアにリンクします ブラウザで直接実行するハンズオンコードでDjango Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Django Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDjango Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「ImageFieldとアップロードの配信」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDjango Academyレッスンでコードを書いて実行できますか?

はい。すべてのDjango Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. STATICFILESとstaticタグ
  2. Production向けのcollectstatic
  3. MEDIA_ROOTとファイルアップロード
  4. ImageFieldとアップロードの配信
← Django Academyに戻る