시작하기
여지껏 다루지 않았던 앱 폴더에 있는 models.py에 대한 것을 공부해 보는 시간이다.
기본 베이스 시작은 Hello World를 출력하는 것 처럼 템플릿 폴더를 만들어주고, url , settings, views.py 작성을 마친 상태로 시작한다.
모델은 데이터베이스로써 우리가 클래스로 틀을 만들면 그것을 가져다 (views) 화면에 보여주는 과정을 가진다 (templates)
1. Models.py에 코드 작성하기
Models.py에 class 를 작성 해 준다.
코드부터 보자면,
x
from django.db import models
class Pr(models.Model) :
title = models.CharField(max_length=200)
pub_date = models.TimeField('date published')
content = models.TextField()
def __str__(self):
return self.title
클래스 명은 임의대로 정해주었다
코드를 하나하나 살펴보자.
xxxxxxxxxx
class Pr(models.Models)
Pr이라는 이름의 클래스를 생성하였고 models 는 Pr 객체가 장고 모델임을 의미 한다.
즉 이 코드는 그냥 이 객체가 장고 모델을 정의하는 코드 라고 생각하면 된다.
xxxxxxxxxx
title = models.CharField(max_length=200)
pub_date = models.TimeField('date published')
content = models.TextField()
변수에 models. XXXXField 라고 공통적으로 되어 있는 것을 볼 수 있을 것이다.
이런 것들을 모델의 '필드' 라고 하며 수 많은 필드가 있지만 필요 할 때 마다찾아서 사용하길 바란다.
CharField는 짧은 글 이며 최대 길이가 200 길이 인 것을 의미한다
TimeField 는 현재 시간이며
TextField 는 본문 같이 긴 내용을 담는 것이다.
xxxxxxxxxx
def __str__(self):
return self.title
이 부분은 자기 자신의 제목을 반환 하는 메소드이다.
외워두면 좋다.
2. 만든 객체를 데이터베이스에 알려주기
xxxxxxxxxx
python manage.py makemigrations
python manage.py migrate
이 2개의 과정을 거쳐야 한다.
왜 이런 추가적인 과정이 필요 할 까?
장고에서 디폴트로 제공하고 있는 데이터 베이스 sqlite는 장고 언어와 별개이다.
디폴트로 sqlite를 사용하고 있지만 얼마든지 다른 데이터베이스를 사용 할 수 있다.
즉 장고와 DB는 별개의 영역이므로 장고에서 만든 객체를 DB에 알려준다고 생각하면 된다.
makemigrations는 DB가 알아 들을수 있게 번역하는 명령어이며
migrate는 내가 만든 그 내용을 DB에 적용하라는 뜻이다.
3. admin 페이지에 등록하기
장고에서 지원하는 admin 페이지는 사이트를 전체적으로 관리하기 위한 인터페이스를 제공한다.
우선 admin 페이지에 들어 가는것은 기본주소/admin 으로 하면 접근 할 수 있다.
하지만 admin 페이지에 들어가면 Username과 Password를 작성하라고 뜨는데 우리는 터미널에서
이 계정을 만들수 있다
xpython manage.py createsuperuser
이렇게 만들어 주고 확인을 하면 admin 페이지에 아까 만든 객체가 등록이 되지 않아있는 것을 볼 수 있을 것이다. 이제 admin.py를 활용해 보자
4. admin.py
xxxxxxxxxx
from .models import Pr
admin.py에 import를 해 준다
뜻은 같은 위치(디렉토리상)에 있는 models 폴더에서 아까 만든 Pr 클래스를 가져온다 라는 뜻이다.
그리고
xxxxxxxxxx
//admin.site.register(class이름)
admin.site.register(Pr)
이 과정만 진행해주면 끝이다.
다음 포스팅에서 마저 진행하도록 하겠다.
'Django' 카테고리의 다른 글
08 BlogProject (1) (0) | 2020.03.23 |
---|---|
07 모델(2) (0) | 2020.03.20 |
05. Wordcount 프로젝트 전 필요한 html 태그 (0) | 2020.03.18 |
04. Django 템플릿 언어 (0) | 2020.03.18 |
03. 디자인 패턴 (0) | 2020.03.17 |