촨
개발 끄적끄적
촨
전체 방문자
오늘
어제
  • 분류 전체보기
    • STORY
    • Algorithm
    • JAVA
    • SPRING
    • DEV
      • django
      • CSS
    • EROWM
    • ETC
    • Python
    • 취업

블로그 메뉴

    공지사항

    인기 글

    태그

    • IntelliJ
    • 면접정보
    • Collection
    • httpurlconnection
    • JSON
    • mybatis
    • maven
    • Spring
    • Maven clean
    • FormValues
    • merge
    • POST
    • N+1문제
    • NHN
    • Github
    • payco

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    촨

    개발 끄적끄적

    DEV/django

    file 업로드 시 MultiValueDictKeyError

    2021. 2. 15. 09:55

    MultiValueDictKeyError는 dict에 일치하는 key가 없는 경우 발생할 수 있는 문제다.

    request.FILES['file']로 데이터를 받아올 때 업로드된 파일이 있으면 dict에 file이 추가되어 제대로 작동되지만, 업로드된 파일이 없으면 dict에 file이 추가되지 않아 해당 오류가 발생한다.

    upload.html

    <input type="file" name="file" accept="image/*" id="id_file">  <!-- 이미지파일 업로드 -->

    views.py

    model.file= request.FILES['file']

     

    request.FILES['file']을 request.FILES.get('file')로 변경해주면 일치하는 key가 없을 때 None이 반환되도록 하여 MultiValueDictKeyError가 나는 것을 방지할 수 있다.

    하지만 이렇게 처리할 경우 파일을 업로드하지 않는 경우 파일이 유지되지 않고 무조건 초기화된다.

    views.py

    model.file= request.FILES.get('file')

     

    파일을 새로 업로드하지 않은 경우 이전 파일을 유지하기 위해서

    request.FILES.get('file')이 None인지를 체크한 후 None이 아닐 때만 업로드하도록 변경해주며 된다.

    views.py

    if request.FILES.get('file') is not None:
        model.file= request.FILES.get('file')

     

      촨
      촨

      티스토리툴바