전편..에 이어.. 세팅까지 완료됐으면 이번 챕터에서는
1. 깃허브 업로드
2. Django app 시작
이 두가지를 할 예정이다.
일단 저장할 repository를 생성하자
나는 v_westar 라는 저장소를 만들었다.
(대충 진짜 새로 만들었으니 아무것도 없다는 이미지)
그러고 터미널에 가서 git 명령어를 실행해보자
일단 실행과정을 이미지로 먼저 보자면
1. git init
git 시작을 위해 명령어를 입력해준다
2. git add .
올릴 파일을 장바구니에 담아두는 형태로, 해당 디렉토리 파일을 올릴 예정
3. git commit -m message
커밋할 때 메시지에 주로 어떤 내용이 변경됐는지 등 문구를 쓰는데,
나는 첫 번째 업로드다 라고 메시지를 보냈다.
4. git remote add origin url
해당 깃 URL을 저장소로 지정
5. git push origin master
이제 커밋을 통해 작업완료를 알렸으니, 깃에 올리기 위해 푸쉬
그러면 이렇게 올라온 걸 알 수 있다.
이전 포스트에서 my_settings.py는 중요한 정보를 담고있는
그런 파일이라고 작성했었다.
그런데 그 파일이 git에 올라오면 모든 사람이 볼 수 있기 때문에,
git에 올라오면 안된다.
그래서 사용하는 게 .gitignore 파일이다.
우선 프로젝트 최상위 디렉토리에서 이 파일을 생성하자
touch .gitignore
그리고 인터넷에서 gitignore.io 라고 검색 후 해당 키워드 입력 후생성
하면 이런식으로 나오는데 내용 다 복사해서 .gitignore에 붙여넣자
그런 다음, 해당 파일에 my_settings.py 를 입력해서 저장하면 끝
이제 내가 작업할 공간인 branch를 설치해야 한다.
git checkout -b b1
이렇게 입력하면, b1이라는 이름의 브랜치를 생성하고, 내 작업공간도 해당 브랜치로 바꾸겠다는 의미이다.
이제 커밋 후 푸쉬를 해보자
다만, 커밋 후 명령어를 아래와 같이 입력해야 한다.
git push origin b1
브랜치인 b1에서 깃에 업로드를 하겠다는 의미이다.
그러면 이렇게 pull request가 오는데,
브랜치에서 작업한 걸 마스터에 합치려는 것이기 때문에,
마스터에 요청을 해야하는 것이다.
그러면 이렇게 내가 작성한 메시지가 제목으로 오고
내용에 마스터가 글을 남겨서 request를 수락하는 것이다.
요청까지 수락했으니, Merge pull request를 눌러 최종 병합하면 끝
인 줄 알았는데, my_settings.py가 살아있다
그래서 깃을 날리고 다시 업로드하기로 했다.
프로젝트가 있는 곳으로 가서 아래 명령어 입력
rm -rf .git
그리고 깃 초기화부터 재시작
1. git init
2. git add .
3. git commit -m message
4. git remote add origin URL
5. git push origin master -f
(f가 강제로 하겠다는 의미임)
그러면 이렇게 파일들이 다시 업로드 되었고, my_settings.py가 없다!
아래 명령어를 입력하고 settings.py를 수정하자
python manage.py startapp products
#settings.py
INSTALLED_APPS = [
...
'products',
]
여기서 장고 플로우를 볼 때, 모델(models.py)에서 DB에 접근하여
데이터에 대해 관리/조작한다고 했었다.
이제 models.py에서 스타벅스 데이터베이스 모델링을 해보자
보는 사람이 있을지 모르겠다만;; 봐도 위코드 하시는 분이 볼 것 같으니
테이블에 대한 설명은 하지 않고 넘어가겠다
#models.py
from django.db import models
# Create your models here.
class Menu(models.Model) :
name = models.CharField(max_length=20)
class Meta :
db_table = 'menus'
class Category(models.Model) :
menu = models.ForeignKey('Menu',models.CASCADE)
name = models.CharField(max_length=20)
class Meta :
db_table = 'categories'
class Nut(models.Model) :
one_serving_kcal = models.DecimalField(max_digits=6,decimal_places=2)
sodium_mg = models.DecimalField(max_digits=6,decimal_places=2)
saturated_fat_g = models.DecimalField(max_digits=6,decimal_places=2)
sugars_g = models.DecimalField(max_digits=6,decimal_places=2)
protein_g = models.DecimalField(max_digits=6,decimal_places=2)
caffeine_mg = models.DecimalField(max_digits=6,decimal_places=2)
size_ml = models.CharField(max_length=20)
size_fluid_ounce = models.CharField(max_length=20)
class Meta :
db_table = 'nutritions'
class Product(models.Model) :
category = models.ForeignKey('Category', on_delete=models.CASCADE)
kor_name = models.CharField(max_length=20)
eng_name = models.CharField(max_length=20)
desc = models.TextField()
nutr = models.OneToOneField('Nut', on_delete=models.CASCADE)
class Meta :
db_table = 'products'
class Images(models.Model) :
img_url = models.CharField(max_length=2000)
product = models.ForeignKey('Product', on_delete=models.CASCADE)
class Meta :
db_table = 'image'
class Allergy(models.Model) :
name = models.CharField(max_length=1000)
class Meta :
db_table = 'allergy'
class allergyProducts(models.Model) :
allergy = models.OneToOneField('Allergy', on_delete=models.CASCADE)
product = models.OneToOneField('Product', on_delete=models.CASCADE)
class Meta :
db_table = 'allergyProducts'
그 다음 migration을 하기 전, makemigrations를 통해 확인해본다
python manage.py makemigrations products
그러면 products 폴더 하위에 migrations 폴더가 생겼고,
0001_initials에 들어가면 테이블 구조를 볼 수 있다.
그런데 나는 신기했던 게 나는 카테고리 테이블에 메뉴라는 컬럼도 진작에 추가했는데
왜 테이블이 만들고 컬럼이 추가되는지 보니,
내 입력순이 아닌 영문순으로 테이블이 생성되어
테이블 생성 -> 컬럼 생성 이렇게 된 것이다.
그 후 이상없으면 mirgration 진행
python manage.py migrate
0001 파일을 통해 확인한 DB구조에 대해 테이블이 생성되었다
그럼 이제 데이터를 직접 넣는 건 마지막 3탄에서..