완숙의 블로그

[Django] Week 3_2 Model & Admin 실습 본문

Programing Language/Web_Django

[Django] Week 3_2 Model & Admin 실습

완숙 2019. 2. 26. 20:55

실습을 하기전에 새로운 프로젝트를 만들어야 한다!

 

# 상위 폴더로 간뒤 가상환경 켜기
$ source myvenv/bin/activate
# 새프로젝트 만들기
$ django-admin startproject secondproject
# 프로젝트로 들어가기
$ cd secondproject
# blog라는 앱 만들기
$ python manage.py startapp blog

 

앱까지 만들어 줬으니 project안의 settings.py에 blog라는 앱을 만들었다고 알려줘야 하니까,

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog.apps.BlogConfig', # 이놈을 추가해!
]

추가해준다!

 

그리고 상위 secondproject폴더이름과 같으니 바꾸고 작업하자.

 

 

실습시작

  1. 우리는 models.py에 어떤 형식의 정보를 받아올 것인지 클래스로 정의해주어야 한다고 했다.

이렇게 적어주자.

 

class Blog(models.Model):	
    title = models.CharField(max_length=200)
    # 문자열로 정의되어 있는 형식을 타이틀로 정의하겠다. 길이는 최대 200
    pub_date = models.DateTimeField('date published')
    # 날짜와 시간을 나타내는 데이터를 date published를 적어 pub_date로 정의하겠다.
    body = models.TextField()
    # 긴문자 형식을 body로 정의하겠다.

 

 

  1. 데이터 베이스에 얘를 알려줘야 한다! settings.py 로 가보자.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

이렇게 장고는 default가 sqlite로 되어있다. 지금은 일단 등록해보자.

 

  1. DB에 적용하기
$ python manage.py makemigrations
(myvenv) WansookcBookPro:secondproject Choiwansik $ python manage.py makemigrations
Migrations for 'blog':
  blog/migrations/0001_initial.py
    - Create model Blog

요렇게 뜬다.

 

이럴경우 migrate파일 까지 생성된 것이고 얘를 실행시키려면

$ python manage.py migrate
(myvenv) WansookcBookPro:secondproject Choiwansik$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying blog.0001_initial... OK
  Applying sessions.0001_initial... OK

주저리주저리 뭐가 많이 뜬다!

 

  1. 서버를 실행시켜보자.
$ python manage.py runserver

 

  1. 켜진 서버 주소창에 추가로 /admin을 쳐보면 계정을 치라는 창이 뜬다!

 

  1. 이제 계정을 생성해줘야 된다!
$ python manage.py createsuperuser

 

  1. 계정을 만들고 다시들어가보자!

2019-02-11 11 06 11

이 창이 뜨면 성공!

 

  1. 어 근데 내가 접근할 수 있는 녀석이 왼쪽 칸에 안 떠있다. 왜 그럴까? 우리는 model에만 어떤 녀석을 할지 models.py에 클래스로 선언했고 migrate를 통해 DB에게 알려줬으나 이 admin에서 관리할수 있도록은 알려주지 않았다. 그렇기 때문에! admin.py에 블로그 클래스를 추가해주자!
from .models import Blog
# .models로 부터 Blog 클래스를 불러와라

admin.site.register(Blog)
# admin site에 Blog 클래스를 등록해라

 

  1. 서버를 돌려보자!

2019-02-11 11 15 49

이렇게 Blog가 추가되어 있고, Add를 누르면,

2019-02-11 11 16 12

우리가 원하는 클래스 정보가 짜란 하고 뜬다!

 

정보를 입력하고 저장을 하면,

2019-02-11 11 18 19

 

이렇게 뜨는데, 제목을 우리가 써놓은 타이틀로 하고 싶으면,

models.py안 Blog 클래스안에

def __str__(self):
    return self.title

적어주면!

 

2019-02-11 11 21 05

이렇게 예쁘게 제목으로 뜬다!

 

 

여기까지가 입력까지의 과정!

이제 보여주는 과정만이 남았다!

Comments