Static & Media

2023. 4. 26. 09:30·Python/Django
반응형

Static

html, css, js등의 파일을 Static 파일이라고 한다.

앱 / 프로젝트 단위로 저장됨

Media 파일

Model 파일에서 models.FileField/ImageField를 통해서 저장한 모든 파일을 Media파일이라고 한다.(Django에만 존재하는 개념)

DB필드에는 저장경로를 저장하며, 파일은 파일 스토리지에 저장

프로젝트 단위로 저장됨

실제로 DB에는 서버에 저장되는 저장 경로가 저장이 되며, 파일은 서버가 지정한 스토리지에 저장이 된다.

(스프링에서 FileUtils를 따로 만들어서 저장해야 됐는데, 여기에서는 이미 그 과정이 완성되어있음)

Pillow라는 이미지 처리 라이브러리가 필수

Media 파일 처리 순서

  1. HttpRequest.FILES를 통해 파일이 전달
  1. 뷰 로직이나 폼로직을 통해 유효성 검증 수행
  1. FileField/ImageField에 경로 저장
  1. settings.MEDIA_ROOT에 파일 저장

MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

ㅇ위 코드에서 MEDIA_URL 은 외부에서 접근하는 경로가 된다.

위 요청경로를 자세히 보면 MEDIA_URL로 정해놓은 URL 경로가 들어가 있는 것을 볼 수 있다. 만약 /media/ 부분을 /hello/ 로 바꾸게 되면 아래와 같이 url 주소가 변경된다.

경로가 변경된 것을 볼 수 있다.

또한, Models에서 ImageField의 매개변수에 uploadTo를 지정하는 것으로, 모델별로 어떤 폴더에 저장될지 설정이 가능하다.

class Post(models.Model):
    message = models.TextField()
    photo = models.ImageField(blank=True, upload_to="instagram/post/%Y/%m/%d") #경로를 지정한다
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        # return f"Custom Post obj ({self.id})"
        return self.message

ㅇ위 코드에서 경로를 지정하는 upload_to가 보일텐데, 기본으로 지정된 이미지 파일 위치(settings에서 지정한 위치 지금은 BaseDir/media) 아래의 instagram/post/업로드년도/업로드달/업로드날짜의 폴더가 생성되고, 그 아래에 이미지가 위치하게 된다.

실제로 media 폴더 아래에 저장된 것을 볼 수 있다.


Uploaded by N2T

반응형

'Python > Django' 카테고리의 다른 글

Django Reverse_name  (1) 2023.04.28
ORM을 통해 데이터 받아오기  (1) 2023.04.26
PIP로 설치된 패키지 찾는법  (1) 2023.04.24
Django의 MVT패턴  (0) 2023.04.24
Django 흐름도  (0) 2023.04.24
'Python/Django' 카테고리의 다른 글
  • Django Reverse_name
  • ORM을 통해 데이터 받아오기
  • PIP로 설치된 패키지 찾는법
  • Django의 MVT패턴
cvcvcx9
cvcvcx9
프로그래머
  • cvcvcx9
    참치와 연어가 좋아
    cvcvcx9
  • 전체
    오늘
    어제
    • 전체보기 (90)
      • JAVA (22)
        • 웹 프로그래밍 딥하게 파보기 (7)
        • String (2)
        • 자바의 다양한 객체 (3)
        • 클래스와 인터페이스, 추상클래스 (2)
        • 컬렉션과 자료구조 (6)
        • 제네릭 (0)
      • SPRING (3)
      • JPA 게시판 (19)
        • JPA게시판 만들기 (7)
        • JPA (10)
        • Spring Security (2)
        • 오류정리 (0)
      • 코딩테스트 준비 (4)
        • 자료구조 (3)
      • Python (21)
        • Django (21)
      • 컴퓨터 기초 (8)
        • 컴퓨팅사고 (7)
      • Web (7)
        • 유용한 설정 (6)
        • Git 관련 (1)
      • 데이터베이스 (1)
        • 친절한 SQL튜닝 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 인기 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
cvcvcx9
Static & Media
상단으로

티스토리툴바