[파이썬][Django] 미디어 파일 업로드 함수 사용 방법과 예제
Django에서 미디어 파일 (예: 이미지, 동영상, 파일 등)을 업로드하고 저장하는 함수를 사용하는 방법과 예제를 제공하겠습니다. 미디어 파일을 업로드하려면 몇 가지 설정과 코드 작성이 필요합니다.
-
미디어 파일 디렉토리 설정
먼저,
settings.py
파일에서 미디어 파일을 어디에 저장할 것인지 설정해야 합니다.MEDIA_URL
과MEDIA_ROOT
설정을 사용하여 미디어 파일의 URL 및 서버 경로를 정의합니다.
# settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
위의 설정은 `MEDIA_URL`로 시작하는 URL 경로를 사용하여 `MEDIA_ROOT` 디렉토리에서 미디어 파일을 저장하도록 합니다.
-
URL 패턴 설정
urls.py
파일에서 미디어 파일을 서빙하는 URL 패턴을 설정해야 합니다. 이렇게 하면 웹 브라우저에서 미디어 파일에 접근할 수 있습니다.
# urls.py
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
# 다른 URL 패턴들
]
# 개발 서버에서 미디어 파일 서빙
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
위의 코드에서 `static` 함수는 개발 서버에서만 사용하도록 `DEBUG` 설정을 확인하며 미디어 파일을 서빙합니다.
-
모델 필드 설정
미디어 파일을 업로드하기 위해 모델에
FileField
또는ImageField
필드를 추가합니다. 이 필드를 사용하여 파일을 업로드하고 저장합니다.예를 들어,
myapp
앱에서MyModel
모델을 만들어 이미지를 업로드하는 예제는 다음과 같습니다:
# myapp/models.py
from django.db import models
class MyModel(models.Model):
title = models.CharField(max_length=100)
image = models.ImageField(upload_to='images/')
위의 코드에서 `image` 필드는 이미지 파일을 저장하는 데 사용됩니다.
-
미디어 파일 업로드 예제
미디어 파일을 업로드하려면 Django 폼을 사용해야 합니다. 폼은 파일 업로드를 처리하는 데 사용됩니다. 예를 들어:
# myapp/forms.py
from django import forms
from myapp.models import MyModel
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['title', 'image']
그리고 뷰 함수에서 폼을 처리합니다:
# myapp/views.py
from django.shortcuts import render, redirect
from .forms import MyModelForm
def upload_image(request):
if request.method == 'POST':
form = MyModelForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('success')
else:
form = MyModelForm()
return render(request, 'upload.html', {'form': form})
위의 코드에서 `MyModelForm`을 사용하여 이미지를 업로드하고 모델에 저장합니다.
-
HTML 템플릿 예제
HTML 템플릿에서 이미지를 업로드하는 폼을 사용하려면 다음과 같이 작성합니다:
<pre>
<code>
<!-- myapp/templates/upload.html -->
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Upload</button>
</form>
</code>
</pre>
위의 코드에서 `enctype="multipart/form-data"`는 파일 업로드를 지원하도록 설정합니다.
이제 Django에서 미디어 파일을 업로드하고 저장하는 방법을 알게되었습니다. 이를 통해 이미지, 동영상, 파일 등의 미디어 파일을 웹 애플리케이션에 업로드하고 표시할 수 있습니다.