객체 (Object)
1. OOP(Object oriented programming)
모델을 만들어 그 모델이 어떤 역할을 가지고 어떻게 행동해야 하는지 정의하여 서로 알아서 상호작용할 수 있도록 하는 것
OBJECT(대상) -> Class(분류 기준)
-> instance(예시)
각 instance는 각기 다른 (변수) 지만 같은 함수를 가짐 그리고 다른 결과
class 안에는 변수, 함수(메소드)
2. 객체
존재하는 것을 속성과 행동으로 나타내는 것
속성은 객체 속성, 행위는 method 로 구현 된다.
ex) post
Post -> 객체
-------------
속성
title
content
author
created_date
modified_date
행위 (method)
create
destory
update
show
publish
------------------------------------------
Django Model
Django 안의 model은 객체의 특별한 종류 -> model 저장 시 DB에 저장되는 것
이 포스팅에서는 기본인 sqlite3가 아닌 mysql연동하여 사용할 것
어플리케이션 만들기
1. startapp (애플리케이션 생성)
(myvenv) C:\Users\유상정\djangogirls>python manage.py startapp blog
-> blog dir 생성되고 그 안에 여러 파일이 들어있는 것 알 수 있음
2. mysite/settings.py 파일 수정
-> 애플리케이션 생성 후, Django에게 사용해야 한다고 알리는 역할
-> file안의 INSTALLED_APPS 를 찾아서, 'blog' 추가
Blog post model 만들기
- 모든 Model 객체는 blog/models.py 파일에 선언하여 model을 만든다.
from django.db import models
from django.conf import settings
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
tilte = models.CharField(max_length=200)
content = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
1. Class 설명
Class Post(models.Model) : -> Model 정의하는 코드 ( Model은 객체)
- class는 특별한 키워드로 객체를 정의하는 것
- Post는 model 이름 (Class이름의 첫 글자는 대문자! and 특수문자와 공백 제외)
- models 는 Post가 Django model임을 의미 -> 이 코드 덕에 Django는 Post가 DB에 저장되어야 함을 알게 된다.
2. 속성
-> author, title, content, created_date, published_date
-> 속성을 정의하기 위해, field 마다 어떤 종류의 Data type을 가지는지를 정의해야함
-> Data type : text, number, Date, User 같은 다른 객체 참조가 있다.
- models.CharField() : 글자 수가 제한된 text를 위한 속성 (제목, 소제목, 댓글 등)
- models.TextField() : 글자 수에 제한 없는 긴 text 를 위한 속성 (Content 등)
- models.DateTimeFild : 날짜와 시간을 의미
- models.ForeignKey : other model에 대한 link를 의미 (참조 가능)
3. method
- def 를 통해서 publish와 __str__을 정의했다. 각각의 method를 호출함으로서 그 기능을 행한다.
DB에 Model을 위한 Table만들기
1. makemigration (migration 파일 생성)
(myvenv) C:\Users\유상정\djangogirls>python manage.py makemigrations blog
Migrations for 'blog':
blog\migrations\0001_initial.py
- Create model Post
2. migrate (DB에 migration 파일 적용)
(myvenv) C:\Users\유상정\djangogirls>python manage.py migrate blog
Operations to perform:
Apply all migrations: blog
Running migrations:
Applying blog.0001_initial... OK
-> Post Model이 DB에 적용되었다.
-> 다음은 다음장에서 설명할 것임
(참고) migration 파일을 제거해야 하는 경우 (wikidocs)
'Web > django' 카테고리의 다른 글
(Django)first project3 - Admin (0) | 2020.08.12 |
---|---|
Django MySQL 연동 (0) | 2020.08.11 |
django 개념 (0) | 2020.08.10 |
(django) first project 1 - 생성 및 설정 (0) | 2020.08.10 |
(Windows) django 설치 (0) | 2020.08.10 |