반응형


앞장의 파트1에서는 기본적인 django의 실행, app 생성, url 그리고 view에 대한 내용이었습니다.

파트2 에서는 django의 db, model과 django에서 제공해주는 admin의 대해서 설명해줍니다.


Model 부분

settings.py 파일을 열어 보면 다양한 django의 세팅을 볼 수 있습니다. 이번 장에서는 db관련 내용만 집중적으로 보겠습니다.

django는 default db로 SQLite를 사용합니다.쿠키커터를 사용하셨다면 postgresql을 사용합니다.

디폴트 db인 SQLite를 사용하신다면 특별한 세팅을 할 필요가 없지만 다른 db를 사용하신다면 설정변경을 필요로 합니다.


settings.py 작성

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.sqlite3',

        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

    }

}

ENGINE: 사용하시는 DB마다 작성 라이브러리들이 정해져 있습니다. (ex) django.db.backends.postgresql / django.db.backends.oracle)

NAME: 하시는 db 명을 작성해줍니다.


다른 db를 사용하신다면 USER / PASSWORD / HOST를 작성해줘야 됩니다.

또한 create 명령어를 통해서 database를 생성해주시는 것도 잊지 말아주세요.


쿠키터터를 통한 설정 파일 base.py 작성

DATABASES = {

#    'default': env.db('DATABASE_URL', default='postgres:///polls'),

    'default': env.db('DATABASE_URL', default='postgres://[계정]:[패스워드]@localhost:5432/[db명 polls]'),

}


db는 이정도만 참고하시면 설정에는 문제가 없으실 겁니다.


다음으로는 INSTALLED_APPS 부분입니다.

INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'blog',

]

아래 blog 를 제외하고는 디폴트로 설정되어 있는 앱이며 자세한 내용은 문서를 참고하시면 되겠습니다.

마지막의 blog 부분은 개발자가 생성한 app입니다. 생성 후에 명시를 해줘야 생성한 app을 사용할 수 있겠습니다.


cf) 설치된 app들에 대해서 문서를 확인하고 소스들을 본 다음에 이해를 해봐도 재미가 있겠다.

현재는 django를 익히는 단계이므로 익히는데 중점을 둔다.


app과 db 설정도 끝났으니 db를 사용하기 위해서 테이블을 설정해야됩니다.

보통 일반 db는 스키마가 나오면 테이블을 직접 생성을 하지만 django는 models.py 파일에서 db 모델을 생성합니다.


polls/models.py 작성

from django.db import models


class Question(models.Model):

    question_text = models.CharField(max_length=200)

    pub_date = models.DateTimeField('date published')


class Choice(models.Model):

    question = models.ForeignKey(Question, on_delete=models.CASCADE)

    choice_text = models.CharField(max_length=200)

    votes = models.IntegerField(default=0)

위 코드의 모델은 django.db.models.Model의 클래스이다. 그냥 봐도 굉장히 직관적이다.

각각의 모델들이 생성 될 때는 구분할 수 있는 넘버형 값들이 생성된다.(id가 보이지 않게 자동으로 생성된다.)

Field는 Field Class인스턴스로부터 만들어진다. char형인 경우는 CharField, 날짜를 나타내고 싶은 경우는 DateTimeField 와 같이 사용한다.

필요에 따라서는 인자도 요구 되어지는데 최대로 작성하는 문자 길이라든지 또는 디포틀 값을 설정 할 수도 있다.



python manage.py makemigrations

python manage.py migrate


makemigrations 명령어는 django에게 너의 모델에서 변화가 있으면 모델을 수정하는 작업을 시키는 작업이다. 수정된 작업은 디스크에 다시금 저장이 된다.

그리고 migrate 명령어를 통해서 다시 적용하는 작업을 한다.



__str__() 의 사용

from django.db import models


class Question(models.Model):

    #....


__str__(self):

    return self.question_text


class Choice(models.Model):

    #...


__str__(self):

    return self.choice_text

모델의 한 로우를 호출 하면 id가 나오는 대신 __str__을 사용하여 사람친화적으로 값을 설정하자.



Admin 부분

python manage.py createsuperuser

python manage.py runserver

django의 강점 중 하나는 어드민을 제공해준다는 것이다.

서비스 개발에만 집중하면 된다.

createsupersuer 명령어를 통해서 어드민 계정을 설정해주고 runserver 를 통해서 서버를 시작하자.

그리고 http://127.0.0.1:8000/admin/ 접속하여 어드민 접속을 해보자.


admin.py에 해당 app을 등록을 해줘야 어드민에 노출이 되는 것을 잊지말자.


튜토리얼을 뿐만 아니라 배울점

1. 현재 일은 DB관련 업무를 하고 있다. django와 db부분을 연결 해주는 부분에 대해서 이슈들을 해결하고 분석을 해보는 것도 재미와 정말 큰 도움이 되겠다. 

최적화 관련해서도 배울 수 있다면 정말 베스트베스트.


반응형

+ Recent posts