일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 타사인증
- Django
- python
- 프로젝트
- 예술영화추천
- Node.js
- mongodb
- 알고리즘
- passport.js
- MyPick31
- Django Blog
- 북마크만들기
- MYSQL
- join()
- 개발
- Exercism
- 장고 개발 순서
- Blog
- 독립영화플랫폼
- 장고
- 장고 프로젝트 순서
- til
- 북마크앱
- Bookmark
- 자바스크립트
- 장고 프로젝트
- JavaScript
- Algorithm
- ART_Cinema
- 파이썬 웹프로그래밍 장고
- Today
- Total
Juni_Dev_log
북마크 앱 만들기 ③ "모델(Model)" with Django 본문
모델 작업은 데이터베이스에 테이블을 생성하도록 해주는 작업이다.
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
(다음 포스팅)
2020/08/18 - [Project/Bookmark APP 만들기 (Django)] - 북마크 앱 만들기 ④ "URLconf" with Django
'Project > Bookmark APP 만들기 (Django)' 카테고리의 다른 글
북마크 앱 만들기 ⑥ "템플릿(Template)" with Django (0) | 2020.08.18 |
---|---|
북마크 앱 만들기 ⑤ "뷰(View)" with Django (0) | 2020.08.18 |
북마크 앱 만들기 ④ "URLconf" with Django (0) | 2020.08.18 |
북마크 앱 만들기 ② "뼈대" with Django (0) | 2020.08.18 |
북마크 앱 만들기 ① "애플리케이션 설계하기" with Django (0) | 2020.08.14 |