실습을 하기전에 새로운 프로젝트를 만들어야 한다!
# 상위 폴더로 간뒤 가상환경 켜기
$ 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폴더이름과 같으니 바꾸고 작업하자.
실습시작
- 우리는 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로 정의하겠다.
- 데이터 베이스에 얘를 알려줘야 한다!
settings.py
로 가보자.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
이렇게 장고는 default가 sqlite로 되어있다. 지금은 일단 등록해보자.
- 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
주저리주저리 뭐가 많이 뜬다!
- 서버를 실행시켜보자.
$ python manage.py runserver
- 켜진 서버 주소창에 추가로 /admin을 쳐보면 계정을 치라는 창이 뜬다!
- 이제 계정을 생성해줘야 된다!
$ python manage.py createsuperuser
- 계정을 만들고 다시들어가보자!
이 창이 뜨면 성공!
- 어 근데 내가 접근할 수 있는 녀석이 왼쪽 칸에 안 떠있다. 왜 그럴까? 우리는 model에만 어떤 녀석을 할지 models.py에 클래스로 선언했고 migrate를 통해 DB에게 알려줬으나 이 admin에서 관리할수 있도록은 알려주지 않았다. 그렇기 때문에!
admin.py
에 블로그 클래스를 추가해주자!
from .models import Blog
# .models로 부터 Blog 클래스를 불러와라
admin.site.register(Blog)
# admin site에 Blog 클래스를 등록해라
- 서버를 돌려보자!
이렇게 Blog가 추가되어 있고, Add를 누르면,
우리가 원하는 클래스 정보가 짜란 하고 뜬다!
정보를 입력하고 저장을 하면,
이렇게 뜨는데, 제목을 우리가 써놓은 타이틀로 하고 싶으면,
models.py안 Blog 클래스안에
def __str__(self):
return self.title
적어주면!
이렇게 예쁘게 제목으로 뜬다!
여기까지가 입력까지의 과정!
이제 보여주는 과정만이 남았다!