#필자의 Django 입문부터 첫 웹페이지 배포하기까지, 코드 리뷰를 위한 글입니다
#필자 또한 입문자이며, 두번째 Django 프로젝트를 마친 후, 입문자의 시점으로 코드 리뷰를 하는 것 이며, 코드를 작성하며 이해하고,느낀 부분을 위주로 작성할 예정 입니다
study/models.py
로 들어가서 모델을 생성하겠습니다
저희는 스터디에 등록할 회원의 회원가입, 스터디 신청, 조회, 요일 변경을 구체화 할 계획으로 study application 을 생성하였습니다
따라서, 해당 application 에서 다룰 객체들을 생각해보면
User(id/password) , Student(이름/방문날짜/스터디종류) 으로 우선 간단하게 생각할 수 있습니다
(User - Student 는 1:1 의존관계가 있어야한다는 것도 생각해봅시다)
User객체 같은 경우에는 Django 에서 기본적으로 주어지는 객체를 사용할 것이며, Student 객체 같은 경우에는 직접 models.py 안에서 생성을 해 주어야 합니다
우선 위와같이 간단하게 Student 모델을 작성합니다
model class 들은 장고 내부에서 정의 된
django.db.models.Model 클래스를 상속받으며
Django 에서 해당 클래스를 모델로 취급하게 됩니다
모델 내부의 models.~~Field 객체 인스턴스는 field 라고 하며
위에서는 name / level / first_date 가 각각 field 가 됩니다
Field 앞에 오는 단어에 따라서 해당 field 에 저장할 데이터의 데이터 타입이 결정됩니다
CharField 로 선언, 저장할 데이터는 크기가 명시 된 문자열 이며, 그 크기는 파라미터 max_length 로 설정할 수 있습니다 (필수)
name 과 같은 CharField
파라미터 choices 로 입력받을 값을 내부에서 정해주기로 했음 ( 레벨은 정해져 있기 때문 )
choices 의 값으로는 2중 튜플이 들어가며 튜플 내부 값으로는
('db에 저장될 값', ('외부에 보여질 값') 의 조합이라고 생각하시면 됩니다
DateField 로 선언, 저장할 데이터는 시간 정보가 없는 날짜 이며
파라미터 default 로 값이 아무것도 안 들어갔을 때 당일 날짜로 설정이 되도록 설계를해줍니다(datefield 의 non-nullable 속성때문에 datefield는 꼭 값이 있어야합니다)
모델을 만들고 데이터베이스에 저장을 하지않으면 메모리에 올라간 데이터들만 사용하는셈이 되기 때문에 우리가 저장한 정보가 날아가는 일이 발생합니다.
따라서 장고에서 기본적으로 제공하는 sqlite3 데이터베이스에 우리의 모델 정보를 테이블화 시켜서 저장하도록 합니다
~ (virt) py -3 manage.py makemigrations study
~ (virt) py -3 manage.py migrate
위의 명령어를 실행하면
migrate 가 실행되는것을 알 수 있습니다
한가지 흥미로운 점은, 우리가 작성한 study 외에도 auth, admin, sessions 이 migrate 되는 것을 볼 수 있는데, 이는 Django 에서 기본적으로 설치되어있는 application 임을 알 수 있습니다
다음 글에서는 장고에서 제공하는 강력한 admin 페이지에 대해서 알아보도록 하겠습니다