Django에서 미디어 업로드
이 데모 기사에서는 미디어 파일에 대한 간략한 소개를 살펴보고 Django 프로젝트에서 미디어 파일을 작동하는 방법도 살펴보겠습니다.
Django에서 MEDIA_ROOT
및 MEDIA_URL
을 사용하여 미디어 업로드
기본적으로 Django에는 로컬 파일 시스템의 파일을 처리하는 표준 방법이 있습니다.
Django 프로젝트에서 설정을 살펴본 적이 있다면 MEDIA_ROOT
및 MEDIA_URL
을 보았을 것이며 다른 프로젝트에서 MEDIA_URL
의 파일에 액세스할 수 있는 위치를 보았을 것입니다.
이제 Django 프로젝트에서 설정하는 방법을 다룰 것입니다.
예를 들어 데모 프로젝트가 있고 그 안에 문서 앱이 있습니다. 모델 내부를 보면 제목
및 파일
필드가 있는 문서 모델을 볼 수 있습니다.
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_URL
및 MEDIA_ROOT
에 대한 설정을 사용해야 합니다.
정적 파일이 필요합니다. 그런 다음 urls.py
파일은 로컬에서 가져올 적절한 URL을 빌드할 위치를 알 수 있습니다.
정적
방법은 URL을 올바르게 생성합니다. 이 정적
방법의 흥미로운 점은 프로덕션이 아닌 로컬에서만 작동한다는 것이므로 설정을 가져와야 합니다.
프로덕션 환경에서 디버그를 False
로 설정하면 작동하지 않습니다. 미디어 폴더를 제대로 제공하려면 사용 중인 웹 서버를 올바르게 구성해야 합니다.
암호:
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을 구성하는 방법을 소개합니다. 사용자가 시스템에 파일을 업로드하면 백엔드는 파일을 넣을 위치와 가져올 위치를 알고 있습니다.
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