Django Framework - Static File

이제일·2021년 1월 1일
0

Django

목록 보기
9/15
post-thumbnail
post-custom-banner

Static File

  • 실제 서비스를 할 때는 여기를 참조.

Static File - 생성

templates의 폴더 생성과 유사합니다. app명/static/app명/css파일,image파일 등등

Static File - 개발모드

settings.py

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

개발 모드일 경우 위와 같이 설정하면 django.contrib.staticfiles가 자동으로 수행된다고 한다. 이러한 방법은 배포시(debug=false) 정상 작동하지 않는다.

templates
style.css 파일 위치 : 프로젝트폴더/앱폴더/static/앱명(polls)/style.css

Media File

사용자가 업로드 한 파일들이 모이는 곳이다.

Media File - image upload

순서는 모델의 image field를 생성, 사용자로부터 파일 업로드, DB를 통해 저장이다.

Media File - settings.py

먼저 개발모드에서도 media의 파일을 사용하기 위해선 세팅이 필요하기에 settings.py에 다음 문장을 추가한다.

# 미디어 파일을 관리할 루트 media 디렉터리
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# 각 media file에 대한 URL prefix
MEDIA_URL = '/media/'

Media File - urls.py

파일을 연결시키기 위해서 url을 열어둬야한다.

from django.conf.urls.static import static
from django.conf import settings

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Media File - models.py

class ImageUpload(models.Model):
    photo = models.ImageField(upload_to="test/")

ImageUpload 테이블에 값을 넣고 저장할경우 midea/test/ 이곳에 저장된다


Media File - template

이미지를 보내기 위해서 form의 속성값으로 enctype="multipart/form-data"를 설정한다.
또한 Generic view를 사용하지 않으면 값을 보낼때 다음과 같이 세팅 후 보내야한다.

var formData = new FormData();
formData.append('photo',$("#input창 ID")[0].files[0]);

media 파일 보여줄 때
urls에서 설정해준 것처럼 media가 최상위 폴더가 되기에 src="media/파일명"이 된다.


Media File - views.py

file = ImageUpload()
file.photo = request.FILES['photo']
file.save()

위와 같이 할 경우 db에는 파일명이 들어가고 midea폴더에 사진이 들어가게된다.

ImageField 함수
file.photo.path : 해당 사진의 절대경로
file.photo.url : 해당 사진의 상대경로
file.photo : 해당 사진의 파일명

profile
세상 제일 이제일
post-custom-banner

0개의 댓글