장고 - 개발환경에서 이미지 파일 업로드하는 방법

1. 미디어 경로 설정

  • 프로젝트 설정에서 media url 과 media root를 설정하고 urlpatterns에 그 경로를 지정한다.
  • 경로 : config(프로젝트 명) > settings.py
    1
    2
    3
    4
    MEDIA_URL = '/media/'
    # MEDIA_URL로 사이트 url 설정
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    # 장고에 media라는 폴더 이름 설정
  • 경로 : config(프로젝트 명) > urls.py)
    1
    2
    3
    4
    5
    from django.conf.urls.static import static
    from django.conf import settings

    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    # settings.py에서 설정한 media 경로와 연동

2. 앱 모델에서 이미지 필드 설정

  • 이미지 필드를 사용하여 모델을 설정한다. (upload_to로 디렉토리 경로 설정)
  • 경로 : board(앱 이름) > models.py
    1
    2
    image = models.ImageField(upload_to='board_images/%Y/%m/%d')
    # media 디렉토리 > board_images > 2019 > 05 > 17 > 이미지 파일명

3. form enctype 설정

  • 템플릿 html form에서 유저가 파일 업로드할 수 있도록 enctype을 설정한다.
    1
    2
    3
    4
    5
    6
    7
    <form action="" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <table>
    {{form.as_table}}
    </table>
    <input type="submit" value="Write">
    </form>