[REAL Python – Django] – “Django – app생성, models 알아보기”

[REAL Python – Django] – “Django – app생성, models 알아보기”

2월 7, 2022

Django에서 app 생성하기

python manage.py startapp 앱이름

위의 코드를 터미널에 입력해서 2개의 app을 만들 수 있습니다.

생성된 app.

위의 구조대로 앱이 생성된 것을 알 수 있습니다.

위의 작업을 마친 후, settings.pyINSTALLED_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

위의 코드를 클래스 안에 작성해 줌으로써 작성 시나 수정 시에 현재의 시간 및 날짜가 자동으로 저장되도록 바꾸어 주었습니다.

Leave A Comment

Avada Programmer

Hello! We are a group of skilled developers and programmers.

Hello! We are a group of skilled developers and programmers.

We have experience in working with different platforms, systems, and devices to create products that are compatible and accessible.