위치(URL)
에 있는 자원을 요청(HTTP request)
받아서 응답(HTTP response)
을 처리하고 제공(serving)
하는 것articles/static/articles/ 경로에 이미지 파일 배치 |
---|
static tag를 이용해서 이미지 파일에 대한 url 제공 |
---|
{% load static %} 가 빌트인되어있는 것이 아니기 때문에 불러와야 함!! |
css 파일도 가능! |
기본 경로 및 추가 경로에 위치한 정적 파일을 참조하기 위한 URL
실제 파일이나 디렉토리가 아니며, URL로만 존재 / URL을 만들기 위한 것
static말고 다른거 적어도 됨
STATICFILES_DIRS에 문자열 값으로 추가 경로 설정 |
---|
STATIFILES_DIRS = 정적파일의 기본 경로 외에 추가적인 경로 목록을 정의하는 '리스트' |
가장 바깥의 베이스디렉토리의 static도 추가경로로 지정해주고 싶다 |
static tag를 사용해 이미지 파일에 대한 url 제공 |
---|
사용자가
웹에서 업로드하는 정적 파일(user-uploaded)
'이미지 파일의 경로'
가 문자열로 DB에 저장미디어 파일을 제공하기 전 준비해야 할 것
1. setting.py에 MEDIA_ROOT, MEDIA_URL 설정
2. 작성한 MEDIA_ROOT와 MEDIA_URL에 대한 url 지정
blank=True 속성을 작성해 빈 문자열이 저장될 수 있도록 제약 조건 설정 |
---|
$ pip install pillow
$ python manage.py makemigrations
$ python manage.py migrate
$ pip freeze > requirements.txt
form 요소의 enctype 속성 추가 -> 공식문서 에서가져옴 |
---|
view 함수에서 업로드 파일에 대한 추가 코드 작성 |
---|
왜 파일경로로 저장되는걸까?
1. 성능 및 DB 최적화
- 직접 파일을 저장하면 DB 크기가 급격하게 증가
- 성능이 저하
- 파일 자체는 파일시스템에 별도로 저장
- DB에는 그 파일에 대한 문자열 경로만2. 유지보수 관점
- 만약 DB에 직접 파일을 저장해버리면 파일을 변경하거나 업데이트 할 때 DB를 직접 조작해야 함
- 그런데 DB에 경로만 저장되어 있다면 파일 시스템에서만 파일을 수정하면 됨
'url' 속성을 통해 업로드 파일의 경로 값을 얻을 수 있음
article.image.url : 업로드 파일의 경로
article.image : 업로드 파일의 파일 이름
이미지를 업로드하지 않은 게시물은 detail 템플릿을 렌더링 할 수 없음
이미지 데이터가 있는 경우만 이미지를 출력할 수 있도록 처리
수정 페이지 form요소에 enctype 속성 추가 |
---|
update view 함수에서 업로드 파일에 대한 추가 코드 작성 |
---|