일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 딥러닝
- 인공지능
- AI
- 장고
- swift
- APP
- toast
- 빅데이터
- Artificial Intelligence
- swift toast message
- model
- 디자인패턴
- 모델
- Deep learning
- 시각화
- 파이썬
- Django
- Toast Message
- view
- python
- 기계학습
- Machine Learning
- BigData
- Pycharm
- 머신러닝
- ios toast message
- Android
- 앱
- 템플릿
- IOS
- Today
- Total
이끼의 생각
Django Web (7) [실습] 블로그 만들기 - App, Model, DB 생성 본문
지금까지 공부한 내용을 기준으로 예제 실습을 시작해보겠습니다. 이 후에 배우는 내용도 추가하면서 블로그 앱을 만들어가볼께요.
파이참, 여러분들의 개발환경을 준비해주세요~
(명령어실행은 프롬프트, 파워셀에서 작업하는 것과 똑같지만 파이참은 파이참터미널에서 자동으로 가상환경이 활성화됩니다. 파이참을 사용하시는 경우 활성화 상태를 확인해보시고, 다른 환경이신 경우 직접 가상환경을 활성화 시키고 작업해주세요~~)
블로그 어플리케이션 만들기
(1) 블로그 App을 생성하겠습니다.
앞 3편에서 연습해본 App 만들기를 참고하세요~
> python manage.py startapp blog
블로그 앱을 한번 확인해볼께요.
blog
├── migrations
| └── __init__.py
├── __init__.py
├── admin.py
├── models.py
├── tests.py
└── views.py
이런식으로 구성되면 성공!
(2) setting에 앱 추가
이제 setting.py에 INSTALLED_APPS에 블로그 앱을 추가해 볼께요.
setting.py는 어딘지 아시겠죠?
게시글 기준 경로 : IKKIsonDjango/IKKIsonDjango/setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'elections',
'blog',
]
블로그 게시글 모델 만들기
블로그 앱 디렉토리 안에 models.py 파일을 열러 모델을 만들어 보겠습니다. 이 파일에 블로그 글 모델을 정의할겁니다.
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey('auth.User', 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
잠깐! str양 옆에 언더스코어(_) 를 두 개씩 넣었는지 다시 확인하세요. 파이썬에서 자주 사용되는데, "던더(dunder; 더블-언더스코어의 준말)"라고도 불러요.
블로그 게시글 모델을 정의하였습니다. 윗줄부터 천천히 설명드리겠습니다.
class Post(models.Model): 블로그 게시글의 모델을 정의하는 코드입니다.
- class는 특별한 키워드로, 객체를 정의한다는 것을 알려줍니다.
- Post는 모델의 이름입니다. (특수문자와 공백 제외한다면) 다른 이름을 붙일 수도 있습니다. 항상 클래스 이름의 첫 글자는 대문자로 써야 합니다.
- models은 Post가 장고 모델임을 의미합니다. 이 코드 때문에 장고는 Post가 데이터베이스에 저장되어야 한다고 알게 됩니다.
다음은 속성, 클래스 변수입니다. (title, text, created_date, published_date, author)
속성을 정의하기 위해, 필드마다 어떤 종류의 데이터 타입을 가지는지를 정해야 해요. 여기서 데이터 타입에는 텍스트, 숫자, 날짜, 사용자 같은 다른 객체 참조 등이 있습니다.
models.CharField - 글자 수가 제한된 텍스트를 정의할 때 사용합니다. 글 제목같이 짧은 문자열 정보를 저장할 때 사용합니다.
models.TextField - 글자 수에 제한이 없는 긴 텍스트를 위한 속성입니다. 블로그 콘텐츠를 담습니다.
models.DateTimeField - 날짜와 시간을 의미합니다.
models.ForeignKey - 다른 모델에 대한 링크를 의미합니다.
이외 에도 모델에서 사용되는 많은 데이터 타입이 아래의 장고 공식문서링크에서 확인하시면 됩니다.
바로가기 => 장고 공식문서 모델 데이터타입
마지막으로 메서드 입니다.
def publish(self):
publish
라는 메서드(method)로 '출시하다' 라는 기능을 정의했습니다. def
는 이것이 함수/메서드라는 뜻이고, publish
는 메서드의 이름입니다. 원하는 데로 메서드 이름을 변경할 수도 있어요. 이름을 붙일 때는 공백 대신, 소문자와 언더스코어를 사용해야 합니다. 예를 들어, 평균 가격을 계산하는 메서드는 calculate_average_price
라고 부를 수 있겠네요.
메서드는 반환값이 있는 경우가 있습니다.(return
) 그 예로 __str__
메서드가 있내요. 위 소스코드의 시나리오오에서는 __str__
메서드를 호출하면 Post 모델의 제목 텍스트(string)를 얻게 됩니다.
모델을 이용하여 데이터베이스 모델 만들기
(1) models.py를 이용한 마이그레이션 생성
이제 마지막으로 데이터베이스에 새 모델을 추가할 겁니다. Post라는 이름의 모델을 추가하는데 먼저 아래의 명령어를 실행해주셔야 됩니다.
> python manage.py makemigrations blog
정상 실행되면 아래와 같은 결과가 나올겁니다.
(myvenv) ~/djangoprojects$ python manage.py makemigrations blog
Migrations for 'blog':
blog/migrations/0001_initial.py:
- Create model Post
실제 실행 화면 입니다.
위의 명령어를 실행하면 장고에서 데이터베이스에 바로 반영할 수 있도록 마이그레이션 파일(migration file)이 미리 준비되 있습니다. 저의 게시글 기준으로 IKKIsonDjango/blog/migrations/0001_inital.py으로 생성되내요.
0001_inital.py 의 실제 내용입니다.
(2) 마이그레이션을 적용하여 데이터베이스 모델 적용
이제 우리가 models.py 에서 미리 정의한 모델을 이용하여 생성된 마이그레이션 파일로 실제 데이터베이스에 모델 추가를 반영해봅시다. 아래의 명령어를 실행하세요.
> python manage.py migrate blog
정상 실행되면 아래와 같은 결과가 나옵니다.
(myvenv) ~/djangoporject$ python manage.py migrate blog
Operations to perform:
Apply all migrations: blog
Running migrations:
Rendering model states... DONE
Applying blog.0001_initial... OK
실제 실행 화면입니다.
**출처 및 참고**
[프로그래머스] 정두식님의 장고를활용한 웹사이트만들기 동영상강의
[오픈소스튜로리얼] Quasar Beyond님의 Django : Python WebFrameWork 동영상강의
[장고걸스공식] 이수진님 외. 장고걸스 튜토리얼 한국어번역
[장고걸스공식] 이수진님 외. 장고걸스 튜토리얼 심화 한국어번역
'파이썬 장고 웹 프레임워크' 카테고리의 다른 글
Django Web (9) 장고 urls (0) | 2019.05.20 |
---|---|
Django Web (8) 장고 관리자 (어드민, admin) (0) | 2019.05.20 |
Django Web (6) Model 장고 모델 (1) | 2019.05.19 |
Django Web (5) 장고 프로젝트 데이터베이스 설정알아보기 (0) | 2019.05.19 |
Django Web (4) 장고 프로젝트 웹서버 설정해보기 (0) | 2019.05.19 |