Juni_Dev_log

북마크 앱 만들기 ③ "모델(Model)" with Django 본문

Project/Bookmark APP 만들기 (Django)

북마크 앱 만들기 ③ "모델(Model)" with Django

Juni_K 2020. 8. 18. 18:57

모델 작업은 데이터베이스에 테이블을 생성하도록 해주는 작업이다.

 


1. 테이블 정의

북마크 앱은 Bookmark 테이블 하나만 필요하다.

테이블은 models.py에 정의한다.

 

(bookmark/models.py)

class Bookmark(models.Model):
    title = models.CharField('TITLE',max_length=100, blank=True)
    url = models.URLField('URL', unique=True)

    def __str__(self):
        return self.title
  • django.db.models.Model 클래스를 상속받아 정의하고, 각 클래스의 변수의 타입도 장고에서 미리 정의한다.

  • title 은 blank(공백) 값을 가질 수 없다.

  • URLField() 필드 클래스의 첫 번째 파라미터인, URL 문구는 url 칼럼에 대한 별칭이다.

  • str 함수는 객체를 문자열로 표현할 때 사용하는 함수이다. 장고에서 모델 클래스의 객체는 테이블에 들어있는 레코드 하나를 의미한다. 해당 함수를 사용하지 않으면, 레코드명이 제대로 표현되지 않는다.


2. Admin 사이트에 테이블 반영

 

models.py 파일에서 정의한 테이블도 Admin 사이트에 보이도록 등록한다.

admins.py 에 다음처럼 등록하면 된다.

 

(bookmark/admins.py)

from django.contrib import admin
from bookmark.models import Bookmark

# Register your models here.

@admin.register(Bookmark)
class BookmarkAdmin(admin.ModelAdmin):
    list_display = ('id','title','url')

BookmarkAdmin 클래스는 Bookmark 클래스가 Admin 사이트에서 어떤 모습으로 보여질 지를 정의하는 클래스이다.

Bookmark 내용을 보여줄 때, id, title, url 이 화면에 출력하도록 지정했다.

 

@admin.register() 데코레이터를 사용하여 어드민 사이트에 등록한다.

참고로 데코레이터 대신에, register() 함수를 사용할 수 도있다.

 

class BookmarkAdmin(admin.ModelAdmin):
    list_display = ('id','title','url')

admin.site.register(Bookmark, BookmarkAdmin)

 

이와 같이 새로운 테이블을 만들 때는 models.py 와 admin.py 두 개의 파일을 수정해야 한다.

 


3. 데이터베이스 변경 사항 반영

테이블의 신규 생성, 테이블의 정의 변경 등 데이터베이스에 변경이 필요한 사항이 있다면, 이를 데이터베이스에 실제로 반영해주는 작업을 해야 한다.

아직까지는 테이블 정의만 해준 상태이다.

명령어를 통해서 데이터베이스에 반영한다.

python manage.py makemigrations bookmark

python manage.py migrate
(참고)

python manage.py showmigrations
→ 모든 마이그레이션을 보여주고, 각 마이그레이션 별로 적용 여부를 확인할 수 있다.
python manage.py sqlmigrate bookmark 0001
→ bookmark 앱의 00001번 마이그레이션을 적용할 때, 사용될 SQL 문장을 보여준다.

 


4. 테이블 모습 확인하기

models.py 파일에 테이블을 정의하고 이를 데이터베이스에 반영하는 명력을 실행했다.

또한 테이블도 Admin 사이트에 등록했다. Admin 사이트에 접속하면 잘 등록되었는지 우리가 정의한 테이블의 모습이 어떤 모습인지 UI 화면에서 쉽게 확인할 수 있다.

 

Admin 사이트에 접속해보자.

 

python manage.py runserver

runserver를 백그라운드로 실행하고, jobs 명령으로 runserver 가 동작 중이라는 것을 확인하는 과정을 보여준다.

서버를 실행하고, 127.0.0.1:8000/admin으로 접속한다.

 

교재에서는 SQLite3로 진행해서 admin에서 확인이 가능하지만, 나는 mysql 로 진행 중이라서, mysql 로 접속해서 확인을 해야한다.

admin 에서 확인할 수 있는 데이터들은 SQLite이다.

 


(이전 포스팅)

2020/08/18 - [Project/Bookmark APP 만들기 (Django)] - 북마크 앱 만들기 ② with Django

 

북마크 앱 만들기 ② with Django

코딩의 시작은 프로젝트 뼈대를 만드는 것에서부터 시작한다. 즉 프로젝트에 필요한 디렉터리 및 파일을 구성하고, 설정 파일을 세팅한다. 그 외에도 기본 테이블을 생성하고, 관리자 계정인 슈

juni-dev-log.tistory.com

(다음 포스팅)

2020/08/18 - [Project/Bookmark APP 만들기 (Django)] - 북마크 앱 만들기 ④ "URLconf" with Django

 

북마크 앱 만들기 ④ "URLconf" with Django

URLconf는 mysite/urls.py 와 bookmark/urls.py 2개의 파일에서 코딩할 수 있지만, 이 예제는 간단하기 때문에 하나의 파일로 코딩을 진행한다. 북마크 앱의 URL은 간단하다. Admin 사이트까지 포함해서 3개의 U

juni-dev-log.tistory.com

 

Comments