본문 바로가기
■ 칼퇴를 위한 파이썬 : 사례

파이썬으로 웹 애플리케이션 개발하기: Django를 활용한 파일 업로드 기능 구현

by 포탈메이커 2023. 7. 14.

파이썬으로 웹 애플리케이션 개발하기: Django를 활용한 파일 업로드 기능 구현

파이썬은 간단하고 강력한 웹 개발 언어로 알려져 있습니다. 그 중에서도 Django는 가장 널리 사용되는 웹 프레임워크 중 하나로, 풍부한 기능과 뛰어난 보안성, 확장 가능성으로 많은 개발자들에게 사랑받고 있습니다. 이번 포스팅에서는 Django를 활용하여 파일 업로드 기능을 구현하는 방법에 대해 알아보겠습니다.

1. Django 프로젝트 설정

Django를 사용하여 파일 업로드 기능을 구현하기 위해서는 먼저 Django 프로젝트를 설정해야 합니다. 새로운 Django 프로젝트를 생성한 후, 프로젝트에 필요한 설정들을 추가해야 합니다. settings.py 파일에서 파일 업로드를 위한 설정을 해줍니다.

```python

settings.py

MEDIAROOT = os.path.join(BASEDIR, 'media') MEDIA_URL = '/media/' ```

위의 코드는 파일 업로드된 파일들이 저장될 경로를 설정하는 부분입니다. MEDIA_ROOT는 파일이 저장될 실제 경로를 의미하고, MEDIA_URL은 파일을 사용하기 위한 URL 주소를 의미합니다.

2. 파일 업로드 모델 생성

다음으로, 파일 업로드를 위한 모델을 생성해야 합니다. Django에서 제공하는 FileField 또는 ImageField를 이용하여 모델에 파일 업로드 필드를 추가할 수 있습니다.

```python

models.py

from django.db import models

class MyFile(models.Model): file = models.FileField(uploadto='upload/') uploadedat = models.DateTimeField(autonowadd=True) ```

위의 코드는 MyFile 모델에 file 필드를 추가하는 부분입니다. upload_to 옵션은 파일이 저장될 경로를 지정해줍니다. uploaded_at 필드는 파일 업로드한 시간을 저장하기 위한 필드입니다.

3. 파일 업로드 폼 생성

이제 파일 업로드를 위한 폼을 생성해야 합니다. 폼은 사용자가 파일을 선택하고 업로드하기 위한 UI 요소입니다.

```python

forms.py

from django import forms

class MyFileForm(forms.Form): file = forms.FileField() ```

위의 코드는 MyFileForm 폼에 file 필드를 추가하는 부분입니다. 이를 통해 사용자가 파일을 선택하여 업로드할 수 있습니다.

4. 파일 업로드 뷰 생성

마지막으로 파일 업로드를 처리할 뷰(view)를 생성해야 합니다. Django에서 제공하는 FormView 클래스를 상속받아 파일 업로드 기능을 구현할 수 있습니다.

```python

views.py

from django.views.generic import FormView from .forms import MyFileForm

class MyFileUploadView(FormView): templatename = 'upload.html' formclass = MyFileForm success_url = '/upload-success/'

def form_valid(self, form):
    form.save()
    return super().form_valid(form)

```

위의 코드는 MyFileUploadView 뷰를 생성하여 파일 업로드 기능을 구현하는 부분입니다. template_name은 뷰에서 사용할 템플릿 파일의 경로를 지정하고, form_class에는 사용할 폼 클래스를 지정합니다. success_url은 파일 업로드 성공 시 이동할 URL을 지정합니다. form_valid 메소드는 폼이 유효한 경우 호출되며, 파일을 저장하고 폼을 유효하게 처리하는 부분입니다.

5. 템플릿 작성

마지막으로 파일 업로드를 위한 템플릿 파일을 작성해야 합니다. 사용자에게 파일 선택과 업로드 버튼을 제공하는 폼을 작성해야 합니다.

```html

{% csrf_token %} {{ form.as_p }}

```

위의 코드는 파일을 선택할 수 있는 <input type="file">과 업로드 버튼을 제공하는 폼을 작성하는 부분입니다. enctype="multipart/form-data"는 파일을 전송하기 위한 인코딩 방식을 지정하는 부분입니다.

결론

이제 Django를 사용하여 파일 업로드 기능을 간단하게 구현하는 방법에 대해 알아보았습니다. Django의 강력한 기능을 활용하면 복잡한 웹 애플리케이션을 쉽게 개발할 수 있습니다. 파일 업로드 외에도 Django에서는 다양한 기능을 제공하고 있으니, Django를 공부하고 익히는 것이 웹 개발에 도움이 될 것입니다. Happy coding!