[REAL Python – Django] – “Django – app생성, models 알아보기”
[REAL Python – Django] – “Django – app생성, models 알아보기”
Django에서 app 생성하기
python manage.py startapp 앱이름
위의 코드를 터미널에 입력해서 2개의 app을 만들 수 있습니다.
위의 구조대로 앱이 생성된 것을 알 수 있습니다.
위의 작업을 마친 후, settings.py
의 INSTALLED_APPS
부분에 앱을 등록해 주어야 합니다.
models.py
작업하기
그저 모델 구조와 기타 코드를 작성하면, 장고가 데이터베이스와 소통하는 모든 더러운 작업을 대신해줍니다.
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Models
모델 파일을 작성하면 장고가 테이블 만들기 등의 작업들을 해 줍니다.
생성된 어플리케이션(앱)의 models.py
를 작성해주었습니다.
from django.db import models
class Post(models.Model): # models 모듈의 Model 클래스를 상속해 만든 것.
title = models.CharField(max_length=30)
content = models.TextField()
created_at = models.DateTimeField()
테이블의 “필드” 는 엑셀의 차트로 비유하면 세로 부분을 말하는 것입니다. 위의 코드에서 title, content, created_at
이라는 “필드”를 만들어주었습니다.
python manage.py makemigrations
위의 명령어를 터미널에 입력하면 migrations
파일이 만들어집니다. 아직까지는 models.py
의 변경사항을 기반으로 migrations
파일을 만들기만 했고, 이를 실제 DB에 적용하려면 다음의 명령어를 터미널에 입력해야 합니다.
python manage.py migration
admin.py
에 Model 등록하기
from django.contrib import admin
from .models import Post
admin.site.register(Post)
admin.py
에 위의 코드로 admin 에 위에서 작성했던 Post
모델을 등록해 줍니다. admin.site.register
는 어드민 페이지에 만들었던 모델을 관리할 수 있게끔 등록해주는 역할을 합니다.
from django.db import models
class Post(models.Model): # models 모듈의 Model 클래스를 상속해 만든 것.
title = models.CharField(max_length=30)
content = models.TextField()
created_at = models.DateTimeField()
def __str__(self):
return f'[{self.pk}] {self.title}' # 파이썬 3.6부터 생긴 포매팅 방법.
모델에 __str__
메서드를 정의하여 포스트 제목과 글 번호를 표시할 수 있게끔 변경하였습니다.
# 아래의 코드는 자동으로 생성일시, 수정일시를 표현할 수 있도록 해 줍니다.
created_at = models.DateTimeField(auto_now_add=True) # 생성일자를 표현할 때: auto_now_add
updated_at = models.DateTimeField(auto_now=True) # 수정일자를 표현할 때 : auto_now
위의 코드를 클래스 안에 작성해 줌으로써 작성 시나 수정 시에 현재의 시간 및 날짜가 자동으로 저장되도록 바꾸어 주었습니다.