
Django 프로젝트에서 file_uploads 기능을 구현하려면 먼저 settings.py 파일에서 MEDIA_ROOT와 MEDIA_URL을 설정해야 합니다. MEDIA_ROOT는 파일을 저장할 디렉토리 경로를, MEDIA_URL은 파일을 접근할 URL을 지정합니다.
#hostingforum.kr
python
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
그 후, forms.py 파일에서 FileField를 사용하여 파일 업로드를 허용하는 폼을 정의합니다.
#hostingforum.kr
python
from django import forms
from .models import UploadFile
class UploadFileForm(forms.ModelForm):
class Meta:
model = UploadFile
fields = ('file',)
views.py 파일에서 폼을 처리하는 함수를 정의합니다. 이 함수는 사용자가 업로드한 파일을 저장합니다.
#hostingforum.kr
python
from django.http import HttpResponseRedirect
from django.shortcuts import render
from .forms import UploadFileForm
def upload_file(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect('/thanks/')
else:
form = UploadFileForm()
return render(request, 'upload.html', {'form': form})
models.py 파일에서 UploadFile 모델을 정의합니다. 이 모델은 파일을 저장할 테이블을 정의합니다.
#hostingforum.kr
python
from django.db import models
class UploadFile(models.Model):
file = models.FileField(upload_to='uploads/')
templates 폴더에 upload.html 파일을 생성하여 폼을 렌더링합니다.
#hostingforum.kr
html
{% csrf_token %}
{{ form.as_p }}
업로드
사용자가 업로드한 파일은 MEDIA_ROOT 경로에 저장됩니다. 업로드한 파일의 이름은 models.py 파일에서 upload_to 옵션을 사용하여 변경할 수 있습니다. 업로드한 파일의 크기는 forms.py 파일에서 max_length 옵션을 사용하여 제한할 수 있습니다.
#hostingforum.kr
python
class UploadFileForm(forms.ModelForm):
class Meta:
model = UploadFile
fields = ('file',)
widgets = {
'file': forms.FileInput(attrs={'max_length': 100}),
}
이러한 설정과 코드를 통해 Django 프로젝트에서 file_uploads 기능을 구현할 수 있습니다.
2025-07-26 05:50