Django Tutorial # part1.5 ,part2(DB)

Mun Lee·2020년 7월 5일
0

git을 사용하는 이유는 코드작성에 대한 모든 히스토리 관리를 위해서..

git init
:이 프로젝트가 git을 사용하고 있다!
디렉토리가 초기화됫다고 나옴

git add .
:현재 위치로부터 모든 디렉토리를 추적한다

git commint
:현재 파일,디렉토리 내용들을 저장한다.

git log
: 저장한 것을 볼 수 있다.

git remote add origin http~
git push -i origin master

django model, model 사용법, api 사용

데이터를 저장하기위해서는 db가 필요하다. 앱은 기능들의 모임
각각의 앱들이 이러한 기능을 제공한다.
django.contrib.admin -- 관리용 사이트. 곧 사용하게 될 겁니다.
django.contrib.auth -- 인증 시스템.
django.contrib.contenttypes -- 컨텐츠 타입을 위한 프레임워크.
django.contrib.sessions -- 세션 프레임워크.
django.contrib.messages -- 메세징 프레임워크.
django.contrib.staticfiles -- 정적 파일을 관리하는 프레임워크.

INSTALLED_APPS에 적어주면 이러한 앱들을 사용한다는 것을 알려준다.

python manage.py migrate
: 저기 위에 있는것들중 몇개는 최소한 하나 이상의 데이터베이스 테이블을 사용하는데, 그러기 위해서는 데이터베이스에서 테이블을 미리 만들 필요가 있다.

모델만들기 : 모델이란 부가적인 메타데이터를 가진 데이터베이스의 구조(레이아웃)을 말한다.모델은 우리가 저장하는 데이터의 필수적인 필드들과 동작들을 포함하고 있다.
이번 튜토리얼에서는 설문조사(poll)앱을 위해 Question과 Choice라는 두개의 모델을 만들어 볼 것이다.
Question -> 질문(question) 과 발행일(publication date)을 위한 2개의 필드
Choice -> 선택지(choice) 와 표(vote)계산을 위한 2개의 필드
각 Choice 모델은 Question 모델과 연관된다.

polls/models.py
from django.db import models
db모델은 2개가 있다.

class Question(models.Model):
	#질문내용과 생성날짜
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
	#선택지에 대한 질문, 투표수
    #선택지는 외래키로 명시되어 있다. 외래키는 Question 저것을 참고하겠다는 거고 Question이 삭제되면 question도 삭제된다. 1대다?
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

각각의 모델들은 django.>db>.models>.Model 이렇다. DB의 각 필드는 Field 클래스의 인스턴스로서 표현된다. 이러한 필드들은 각 필드가 어떤 자료형을 가질 수 있는지를 장고에게 알려준다.
모델의 활성화
철학 : 장고의 앱들은 꼈다뺐다 할 수 있다. 앱을 다수의 프로젝트에서 사용할수 있으며, 앱을 배포할 수도 있다. 특정 장고 사이트에 앱들이 묶여있지 않아도 되기때문

mysite/settings.py
INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

이렇게 함으로써 현재 프로젝트에게 polls 앱이 설치되어있다는것을 알려줄수있다.
여기에 등록하고 안함으로써 앱을 넣고 뺼수 있다. 참 편리하쥬?
앱을 포함시키고 나면

python manage.py makemigrations polls
을 입력해줘야한다. 설계도를 만드는 작업임

Migrations for 'polls':
  polls/migrations/0001_initial.py
    - Create model Question
    - Create model Choice
python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  Rendering model states... DONE
  Applying polls.0001_initial... OK

db내의 실제 테이블을 생성하는 작업을 수행한다.

모델의 변경을 만드는 세가지 지침
(models.py 에서) 모델을 변경한다.
python manage.py makemigrations을 통해 이 변경사항에 대한 마이그레이션을 만든다.
python manage.py migrate 명령을 통해 변경사항을 데이터베이스에 적용한다.

API 가지고 놀기: api는 개발자가 필요로 하는 데이터를 뽑아낼 수 있도록 만들어 놓은 함수 또는 서버에게 데에이터베에게 내용을 입력할 수 있도록 만들어 놓은 함수

python manage.py shell

shell내로 진입하자
####만들어놓은 모델내의 초이스와 퀘스쳔을 사용하겠다.

from polls.models import Choice, Question
Question.objects.all()

####Question 내의 모든 데이터를 가지고와라 등록된게 없으니까
<QuerySet []> 이게 출력된다.

Question 내의 데이터를 만들어보자.

from django.utils import timezone

발행일 발급을 위해 임포트해주자

q = Question(question_text="What's new?", pub_date=timezone.now())

퀘스쳔 하나 추가해주고.
q.save() q.id -> 1 id는 장고에서 자동으로 만들어주는 필드중 하나

profile
개발자가 되고자 하는 30살

0개의 댓글