포스트

Django 파일 업로드 검증 후 리다이렉트 방법

파일 업로드와 검증 과정 이해하기

파일 업로드는 웹 개발에서 흔히 볼 수 있는 기능입니다. 사용자는 파일을 선택하고 서버로 보낼 수 있습니다. 그러나 모든 파일을 무조건 받아들이면 안 됩니다. 보안 문제나 파일 크기, 형식 등을 검증해야 합니다. Django(장고)에서는 이러한 파일 검증과 업로드를 간편하게 할 수 있습니다.

FileFieldModelForm 활용

Django에서는 FileField를 사용하여 모델에 파일 필드를 추가할 수 있습니다. 또한, ModelForm을 통해 해당 모델과 연결된 폼을 만들어 파일 업로드와 검증을 할 수 있습니다.

1
2
3
4
5
6
7
from django import forms
from .models import MyModel

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = ['file_field']

clean_<필드이름> 메서드로 파일 검증하기

ModelForm에서 제공하는 clean_<필드이름> 메서드를 사용하면 해당 필드에 대한 커스텀 검증 로직을 추가할 수 있습니다. 예를 들어, 파일 크기를 검증하려면 다음과 같이 코드를 작성합니다.

1
2
3
4
5
6
def clean_file_field(self):
    file = self.cleaned_data.get('file_field')
    if file:
        if file.size > 4 * 1024 * 1024:
            raise forms.ValidationError('파일 크기가 너무 큽니다.')
    return file

파일 검증 후 리다이렉트하기

파일이 성공적으로 검증되면, 일반적으로 다른 페이지로 리다이렉트를 하게 됩니다. Django에서는 HttpResponseRedirect 함수 또는 redirect 단축 함수를 사용하여 쉽게 리다이렉트할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
from django.http import HttpResponseRedirect
from django.shortcuts import redirect

def upload_file(request):
    if request.method == 'POST':
        form = MyModelForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/success_url/')
            # 또는 return redirect('/success_url/')

이렇게 해서 Django에서 파일 업로드 후 검증을 통과하면 다른 페이지로 리다이렉트하는 과정을 알아보았습니다. 이를 잘 활용하면 사용자에게 안전하고 효율적인 파일 업로드 서비스를 제공할 수 있습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.