본문 바로가기

WEB/Django

Django 입문, 한줄한줄 따라하기!! (2)

이번글은 (1)편 https://keep-steady.tistory.com/25 에 이어 장고의 모델, 관리자 및 배포를 해보자!

역시 장고 교육자료 : tutorial.djangogirls.org를 따라해보며 정리한다.

 

1. 장고 모델 뜯어보기

1) 어플리케이션 만들기

나는 이전 편에서 만든 test_django 폴더 밑에 manage.py, mysite, db.sqlite3이 있다.

manage.py를 이용하여 blog라는 폴더 밑에 어플리케이션을 만들거다. 아래 명령어를 수행한다.

>> python manage.py startapp blog

 

그럼 test_django 폴더 아래 blog 폴더가 만들어지고, 어플을 만들기 위한 함수들이 자동으로 생성된다. 

python manage.py startapp blog 결과

그 후 장고에게 어플리케이션 생성한걸 알려줘야 한다. 안그럼 모르니까

mysite/settings.py에서 아래와 같이 INSTALLED_APPS의 list에 위에서 추가한 'blog', 를 추가한다.

특이한 점은 list의 마지막 인데도 왜 'blog',로 ','를 남길까?? 나라면 지울테지만 저렇게 되있으니 그대로 고고

 

mysite/settings.py의 INSTALLED_APPS에 추가

 

2) 블로그 글 모델 만들기

Model 객체가 선언되있는 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

Post라는 class를 생성하는 코드이다. Post는 models.Model을 가져왔고 이는 장고 모델을 의미한다. 그래서 데이터베이스에 저장된다.

 

models.CharField : 글자 수가 제한된 텍스트를 정의

models.TextField :  글자 수에 제한이 없는 긴 텍스트를 위한 속성 for 블로그 콘텐츠
models.DateTimeField : 날짜, 시간 
models.ForeignKey : 다른 모델에 대한 링크

 

3) 데이터베이스에 모델을 위한 테이블 만들기

위에서 만든 Post라는 모델을 데이터베이스에 추가하자

3.1) 일단 마이그레이션 파일을 만들고

>> python manage.py makemigrations blog

 

3.2) 반영해서 실제 데이터베이스에 모델을 추가한다

>> python manage.py migrate blog

그럼 인쟈 모델이 DB에 반영됐다!!!

 

 

2. 장고 관리자페이지 생성힉하기!!

웹사이트/서버는 관리자가 있어야 한다. 아래와 같이 관리자 로그인 페이지를 만들어보자

나는 관리자 화면을 한국어로 하기 위해 settings.py에서 LANGUAGE_CODE = 'en-us' => LANGUAGE_CODE = 'ko'로 변경했다.

 

 

blog/admin.py에 아래와 같이 코드를 추가하자.

models 파일에서 만든 Post 클래스를 가져와서 admin에 등록하는 코드이다.

## blog/admin.py

from django.contrib import admin
from .models import Post  # models에 정의한 Post class를 불러온다

admin.site.register(Post)  # admin에 model에 정의한 Post class를 추가시킨다

 

확인해보자. 서버 동작!!

>> python manage.py runserver

웹에서 127.0.0.1:8000/admin 로 접속해보자. 관리자 로그인 페이지가 잘 동작한다! 포트번호 8000은 자동설정인갑다.

 

관리자 생성하기

관리자페이지는 잘 열리니까, 이제 관리자를 등록해야겠지? 아래 명령어로 관리자를 등록해보자

아이디, 이메일, 비번을 입력하면 된다

>> python manage.py createsuperuser

 

 

다시 웹에서 127.0.0.1:8000/admin 으로 접속 후 입력한 아이디/비번을 너어보자

그럼 아래와 같이 관리자 페이지로 접속할 수 있다. 성공!