이번글은 (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 폴더가 만들어지고, 어플을 만들기 위한 함수들이 자동으로 생성된다.
그 후 장고에게 어플리케이션 생성한걸 알려줘야 한다. 안그럼 모르니까
mysite/settings.py에서 아래와 같이 INSTALLED_APPS의 list에 위에서 추가한 'blog', 를 추가한다.
특이한 점은 list의 마지막 인데도 왜 'blog',로 ','를 남길까?? 나라면 지울테지만 저렇게 되있으니 그대로 고고
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 으로 접속 후 입력한 아이디/비번을 너어보자
그럼 아래와 같이 관리자 페이지로 접속할 수 있다. 성공!
'WEB > Django' 카테고리의 다른 글
Django(장고) 구축 코드로 일단 따라해보기(2) (1) | 2020.05.27 |
---|---|
Djangh(장고) 구축 코드로 일단 따라해보기(1) (0) | 2020.05.27 |
Django 입문, 한줄한줄 따라하기!! (3) (0) | 2020.05.22 |
Django 입문, 한줄한줄 따라하기!! (1) (0) | 2020.05.21 |