JavaScript required
We’re sorry, but Coda doesn’t work properly without JavaScript enabled.
Skip to content
Gallery
Django 메뉴얼
Django 메뉴얼
django 구조 + MVC, MVP, MVVM
학생 이메일 생성 방법
JetBrains 학생 라이센스
JetBrains의 Pycharm 설치
Anaconda 설치
Pycharm에서 프로젝트 생성하기
장고 프로젝트 시작!
장고 모델
Django 관리자
장고 Urls
장고 뷰 만들기
HTML 시작하기
장고 QRM (Querysets)
템플릿 동적 데이터
장고 템플릿
CSS - 예쁘게 만들기
템플릿 확장하기
애플리케이션 확장하기
장고 폼
블로그 개선하기
이미지 업로드
동영상 URL 업로드
안전한 웹사이트 만들기
댓글 모델 만들기
깃허브 업로드
파이썬애니웨어(PythonAnywhere)에 배포하기
도메인 만들기
메뉴얼 작성전 읽기
More
Share
Explore
장고 모델
블로그 내 모든 포스트를 저장하는 부분을 만들어 봅시다.
장고 안의 모델은 객체의 특별한 종류입니다. 이 모델을 저장하면 그 내용이
데이터베이스
에 저장되는 것이 특별한 점이죠.
어플리케이션 만들기
어플리케이션을 만들기 위해 콘솔 창에서 아래 명령어를 실행하세요
(
djangogirls
디렉토리에서
manage.py
파일)
<command-line>
(myvenv) ~/djangogirls$ python manage.py startapp blog
이제
blog
디렉터리가 생성되고 그 안에 여러 파일도 같이 들어있는 것을 알 수 있습니다.
현재 디렉토리와 파일들은 다음과 같을거에요
어플리케이션을 생성한 후 장고에 사용한다고 알려줘야 합니다.
이 역할을 하는 파일이
mysite/settings.py
입니다.
이 파일 안에서
INSTALLED_APPS
를 열어,
)
바로 위에
'blog'
를 추가하세요. 최종 결과물은 아래와 다음과 같을겁니다.
블로그 글 모델 만들기
모든
Model
객체는
blog/models.py
파일에 선언하여 모델을 만듭니다. 이 파일에 우리의 블로그 글 모델도 정의할 거에요.
blog/models.py
파일을 열어서 안에 모든 내용을 삭제한 후 아래 코드를 추가하세요.
< blog/models.py >
from django.conf import settings
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = 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
코드에 대한 설명을 해드릴게요
from
또는
import
로 시작하는 부분은 다른 파일에 있는 것을 추가하라는 뜻입니다.
class Post(models.Model):
는 모델을 정의하는 코드입니다.
class
는 특별한 키워드로, 객체를 정의한다는 것을 알려줍니다.
Post
는 모델의 이름입니다. (특수문자와 공백 제외한다면) 다른 이름을 붙일 수도 있습니다. 항상 클래스 이름의 첫 글자는 대문자로 써야 합니다.
models
은 Post가 장고 모델임을 의미합니다. 이 코드 때문에 장고는 Post가 데이터베이스에 저장되어야 한다고 알게 됩니다.
이제 속성을 정의하는 것에 대해서 설명할게요
(데이터 타입에는 텍스트, 숫자, 날짜, 사용자 같은 다른 객체 참조 들이 있어요)
models.CharField
- 글자 수가 제한된 텍스트를 정의할 때 사용합니다. 글 제목같이 짧은 문자열 정보를 저장할 때 사용합니다.
models.TextField
- 글자 수에 제한이 없는 긴 텍스트를 위한 속성입니다. 블로그 콘텐츠를 담기 좋겠죠?
models.DateTimeField
- 날짜와 시간을 의미합니다.
models.ForeignKey
- 다른 모델에 대한 링크를 의미합니다.
데이터베이스에 모델을 위한 테이블 만들기
이 장의 마지막 단계입니다. 이제 데이터베이스에 우리의 새 모델, Post 모델을 추가할 거에요.
먼저 우리는 장고 모델에 몇가지 변화가 생겼다는 걸 알게 해줘야해요!
터미널에
python manage.py makemigrations blog
를 입력해 보세요.
아래와 같이 보일거에요!
*python manage.py migrate [app_name] [migration_name]
장고는 데이터베이스에 지금 반영할 수 있도록 마이그레이션 파일이라는 것을 준비해놨어요!
이제
python manage.py migrate blog
명령을 실행해, 실제 데이터베이스에 모델 추가를 반영하겠습니다!
터미널에
python manage.py migrate blog
를 입력해보세요
아래와 같이 보일거에요!
이제 글 모델이 데이터베이스에 저장되었어요!
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
Ctrl
P
) instead.