작성자 : 강태하
<aside> 💡 스태틱과 미디어는 뭔가요??
</aside>
다음과 같은 순서로 사용한다.
개발자가 준비한 Static 파일들을 폴더에 담아둔다. //(App폴더 안에) Static 폴더를 만들고 그 안에 파일을 넣어.
Static 파일이 어디있고, 어디로 모을지 알려준다. //settings.py 에서 알려준다.
Static 파일들을 모은다. //명령어 : $ python manage.py collectstatic
html 상에 "나 여기다가 Static 파일 쓸거야!" 선언 후 static 파일 사용 //.html 맨 위에 {% load static%} 추가
경로 지정에 대해서 한번 살펴보자
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'blog', 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
일반적으로 DB를 따로 만들어서 연결해 관리하는 타 프레임워크와는 달리 장고는 Models.py 파일과 migrate, makemigration이라는 명령어를 통해 DB를 쉽게 관리할 수 있도록 한다.
여기서 잠깐,
Models.py 는 CRUD할 Data의 Format(Structure)을 관리하는 부분 (필드, 글자수, 공백여부 ...)
Models.py 를 건든다 → DB에 관한 부분을 수정한다 → makemigrations, migrate를 해주어야 한다.
지난 시간 CRUD를 만들기 전에 이런 모델을 만들었다.
class Blog(models.Model):
title = models.CharField(max_length=200)
writer = models.CharField(max_length=100)
pub_date = models.DateTimeField()
그리고 makemigrations, migrate를 했더니 Root폴더(blogproject)에 우리의 DB파일 db.sqllite이 생겼다!
더 자세히 살펴보자.
→ makemigrations 시에 앱폴더 (blog)에 migrations라는 폴더와 함께 0001_initial.py 라고 하는 migrate정보(DB생성 혹은 수정정보)를 생성해낸다. *0001_initial은 물론 생성정보다.
→ migrate시에 지금까지 makemigrations을 통해 만들었던 (여기서는 0001뿐) migrate정보를 한꺼번에 db에 다 반영한다. *0001_initial 즉 생성정보를 반영시켰으니 db.sqlllite가 생기는 것이다.