[Django] #3 Model (MTV 패턴)

✨New Wisdom✨·2020년 8월 24일
1

📘Django📘

목록 보기
3/4
post-thumbnail

Model?

model이란 데이터, 즉 데이터 베이스에 저장되는 데이터를 의미한다.
원래는 서버할 때 DB를 SQL언어를 통해 다루는게 일반적인데,
우리 django 는 ORM(Object-Realtional-Mapping)을 제공하기 때문에
SQL을 모르더라도 쉽게 다룰 수 있다!(Nodejs에서 sequelize와 동일한 역할!)

MTV?

🤔 그렇다면, MTV는 무엇이냐?
👉 M (Model) : DB에 저장되는 데이터 영역
👉 T (Template) : 사용자에게 보여지는 영역
👉 V (View) : 요청을 받고 전달하는 데이터들을 해당 앱의 로직으로 가공해 템플릿에 보내주는 역할

🚩 models.py

모든 model 객체는 app 디렉토리 내에 models.py에 선언할 것이다!

📃 models.py

from django.db import models

# Create your models here.
class Review(models.Model):
    title  = models.CharField(max_length=50)
    body = models.TextField()
    date = models.DateTimeField('date')

    # admin 에서 글 제목 표시함
    def __str__(self):
        return self.title
  • def str(self) : admin 페이지에서 내가 작성한 객체의 title이 보여자도록 하는 역할

🤔 admin이 뭐냐??? 🔜 밑에서 설명할거임!

Migration

django 공식 문서에 따르면 migration이란,

마이그레이션은 모델에 대한 변경 사항 (필드 추가, 모델 삭제 등)을 데이터베이스 스키마에 전파하는 Django의 방법입니다. 대부분 자동으로 설계되었지만 마이그레이션시기, 실행시기 및 발생할 수있는 일반적인 문제를 알아야합니다.

Model을 생성하고 난 후, 해당 모델에 상응하는 테이블을 데이타베이스에서 생성할 수 있다. Python 모델 클래스의 수정과 생성을 DB에 적용하는 과정을 Migration이라고 한다. 생성과 수정 후에는 무조건 migration을 해서 DB가 알 수 있도록 해주어야 한다.
즉! DB 업데이트다!

🚩 migration 만들기

📃 settings.py (프로젝트 디렉토리 내에 있음)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
  • DB 에 대한 정보가 설정되어 있다. DB는 default로 sqlite3 를 사용하고, 파일명은 /db.sqlite3 로 지정되어 있다.

다음 명령어를 입력해 migration을 만들자!

$ python manage.py makemigrations
  • models.py의 내용을 DB가 알아듣게 번역하는 명령어
  • migration의 파일 초안을 생성한거다.

    그럼 성공적으로 migration이 만들어진 것을 확인할 수 있다.

이제 해당 migration파일을 DB에 반영하자!

$ python manage.py migrate


이렇게 성공해야한다.

Admin

django는 참 신기하게 관리자를 위한 페이지를 제공한다.
친절하네
모델에 대한 관리용 인터페이스를 모두 자동으로 생성해주는 django!

🤔 자자 그래서 admin은 어떻게 이용하는데?

🚩admin 만들기

$ python manage.py createsuperuser
  • admin 페이지 관리할 superuser를 만든다.
  • 이렇게 아이디, 이메일, 패스워드 적으라한다.
  • 참고로 패스워드 넘 짧으면 저렇게 경고문 뜨는듯...^^

admin.py (app 디렉토리 내에 있음)

from django.contrib import admin
from .models import Review

# Register your models here.
admin.site.register(Review)
  • models.py에서 작성한 class를 admin 페이지에 등록해 관리할 수 있도록 한다.

자자 이제 '/admin'으로 들어가서 로그인을 하면~

짜란~
이렇게 관리할 수 있는 페이지가 나온다.

저 '+Add' 버튼을 누르면 admin 페이지에서도 데이터 입력이 가능하다는 점!
'Change'는 데이터를 수정할 수도 있다.

정말 django는 배우면 배울수록 다른 서버 프레임워크보다
이다.

profile
🚛 블로그 이사합니다 https://newwisdom.tistory.com/

0개의 댓글