Django でメディアをアップロードする

Salman Mehmood 2023年6月20日
Django でメディアをアップロードする

このデモ記事では、メディア ファイルについて簡単に紹介し、Django プロジェクトでメディア ファイルを操作する方法についても説明します。

Django で MEDIA_ROOTMEDIA_URL を使用してメディアをアップロードする

デフォルトでは、Django はローカル ファイル システム内のファイルを処理する標準的な方法を備えています。

Django プロジェクトの設定を見たことがあるなら、おそらく MEDIA_ROOTMEDIA_URL を見たことがあるでしょうし、別のプロジェクトでは、おそらく MEDIA_URL 上のファイルにアクセスできる場所を見たことがあるでしょう。

それでは、Django プロジェクトで設定する方法について説明します。

たとえば、Demo プロジェクトがあり、その中にドキュメント アプリがあります。 内部のモデルを見ると、title フィールドと file フィールドを持つドキュメント モデルが表示されます。

file フィールドには、ドキュメントに等しい upload_to キーワード引数があります。これは、ファイルがアップロードされる場所を意味します。 このオブジェクトのすべてのファイルをドキュメントのサブフォルダーに配置します。

コード:

from django.db import models


class Document(models.Model):
    title = models.CharField(max_length=128, blank=True)
    file = models.FileField(upload_to="documents", max_length=200)

したがって、構成を開始するために最初に必要なことは、settings.pys を開くことです。

設定のトップにいる場合は、ベースまたは定数が表示されます。 これでプロジェクトのルートに到達し、ベース パスを設定できるようになります。

コード:

BASE_DIR = Path(__file__).resolve().parent.parent

setting.py ファイルの最後にジャンプすると、MEDIA_ROOT から開始し、os.path.join を設定します。 次に、BASE_DIR をメディアとして結合します。つまり、プロジェクトでメディア フォルダーを定義し、そこにすべてのファイルをアップロードします。

次に、MEDIA_URL を設定して、Django が適切に URL を構築できるようにします。 これは、ユーザーがアップロードしたコンテンツにアクセスするために、ドメイン名の最後にメディアが最初に表示されることも意味します。

コード:

# Manage media
import os

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

次にセットアップする必要があるのは、urls.py ファイルを使用して、ローカル マシンでこれらを適切に表示するための URL ルーティングです。 そのため、urls.py を開き、static() メソッドを呼び出し、MEDIA_URLMEDIA_ROOT の設定を使用する必要があります。

静的ファイルが必要です。 次に、urls.py ファイルは、ローカルで取得する適切な URL を作成する場所を認識します。

static メソッドは URL を正しく生成します。 この static メソッドの興味深い点は、ローカルでのみ機能し、本番環境では機能しないため、設定をインポートする必要があります。

つまり、実稼働環境でデバッグを False に設定すると、これは機能しません。 メディア フォルダーを適切に提供するには、使用している Web サーバーを適切に構成する必要があります。

コード:

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static


urlpatterns = [
    path("admin/", admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

最後に、プロジェクトのルートにメディア フォルダーを作成し、メディア フォルダー内にドキュメント フォルダーを作成します。

Django 管理パネルに移動して新しい画像をアップロードしようとすると、ファイルをアップロードできます。 アップロード後、ドキュメント フォルダ内のこの画像を見ると、適切にアップロードされていることがわかります。

これで、メディア ルートでメディア URL を構成するための適切な紹介ができました。 ユーザーがファイルをシステムにアップロードすると、バックエンドはファイルをどこに置き、どこからプルするかを認識します。

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn