티스토리 뷰
728x90
반응형
장고에서 사용자가 업로드한 파일 저장하는 매우매우 쉬운 방법입니다!
models.py를 사용하지 않고 바로 views.py에서 파일을 저장하는 방법이에요.
일단 html에서 form태그에 enctype="multipart/form-data" 속성을 달아주세요.
enctype 속성은 form의 데이터가 서버로 제출될 때 해당 데이터가 인코딩되는 방법을 명시합니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>파일 저장하기</title>
</head>
<body>
<form method="POST" action="URL" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file" id="file">
<button type="submit">파일 저장</button>
</form>
</body>
</html>
이제 form 데이터를 받는 views.py 파일을 열고,
FileSystemStorage를 임포트해주세요.
FileSystemStorage는 별도의 파라미터 없이 생성하면
파일이 저장되는 디렉토리의 경로는 settings.py의 MEDIA_ROOT입니다.
아까 form에 있던 file을 request.FILES로 받아와서 FileSystemStorage로 저장해주면 끝!!
from django.core.files.storage import FileSystemStorage # 파일저장
file = request.FILES['file']
fs = FileSystemStorage()
filename = fs.save("파일명.csv", file)
사용자가 form을 입력하고 파일 저장 버튼을 누르면,
파일이 저장되는 디렉토리경로에 자동으로 파일이 저장됩니다!!
끝
728x90
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[pandas] 좌표계 x,y행 모두 다른 좌표계로 변경하는 방법 (0) | 2021.10.21 |
---|---|
[python] 값 비교하여 증가율, 하락률(%) 알아내기 (전년, 전월대비 등) (0) | 2021.10.20 |
[pymongo] 몽고DB 인서트 되어있는 값에 원하는 수 곱하기 (0) | 2021.10.14 |
[오류해결] re.findall 사용 시 TypeError: expected string or bytes-like object 오류 (0) | 2021.10.13 |
[정규화] 최소값과 최대값을 이용하여 0~1 사이 범위의 값으로 변환하기 (0) | 2021.10.13 |
댓글