본문 바로가기

Back-end/Django

Django Blog 만들기 Part 5 : Database and Migrations

1. Models.py Post class 생성해준다.

  • Title : 타이틀에 속성을 정해준다.
  • Content : 컨텐츠의 속성
  • Date_posted : DateTimeField(default.now) 장고 유틸리티에서 timezone import해서 사용한다.

 

  • on _delete=models.CASCADE = 유저가 포스트를 삭제하면 포스트가 삭제 된다. 

*포스트 모델과 유저모델은 서로 연관되어있다. 유저는 하나지만 여러포스트를 가질 있다. 이렇게 하기 위해서  Foreignkey(User) 사용한다

*User 사용하기 위해 아래와 같이 import해준다.

 

2. 변경한 Models 저장하기 위해 아래와 같이 입력해준다.

-Models 수정한 후에는 makemigrations 무조건 실행해 줘야한다.

 

3. 위에서 makemigrations으로 저장한 파일들은 아래와같이 저장된다.

-0001_initial.py파일로 들어가보면 어떤변경 사항이 저장되었는지 확인 있다.

 

4. 커맨드라인에서 또한 SQLite명령어를 사용하여 변경사항을 확인 있다.

 

5. Migrate 명령어를 사용하여 저장상태를 확인할 있다.

 

-migration 굉장히 유용하다. Migration 데이터베이스를 수정하는것을 허용한다. 심지어 생성하거나 기존의 데이터를 변경 때도. 복잡한 SQL코드를 직접 수정하지 않아도 run migration으로 모든걸 변경 있다.

 

6. Shell 이용하면 데이터와 상호작용할 있다.

-아래 명령어로 shell 접속

 

-blog 앱에 모델을 import해준다.

 

-user import해준다.

 

-아래 명령어로 query set 있다.

 

- 유저 확인

 

-filter명령어로 이름으로 찾을 있다.

 

-아래 검색어로 첫번째 유저를 검색 가능

 

-user 첫번째 유저로 캡쳐/등록하기

 

-ID, pk 결과값을 불러올 있다.

 

-user : 유저아이디를 확인

-post : 등록된 포스트를 확인

 

-포스트 생성하기

 

-포스트 저장하기

 

-Post.objects.all() 명령어로 포스트 확인하기

-django_project.models.py에서 __str__메소드를 추가해준다.

 

-exit() 명령어로 shell에서 빠져나와준다.

 

-다시 shell 접속해준다. 이제 reimport되어 위에 models.py파일이 수정되었다.

 

-처음 shell 실행했을때와 똑같이 Post / User import해준다.

 

-아래 명령어로 POST 확인해 준다.

 

-Username user 변경해 준다.

 

-post_2 생성하고 save 명령어로 저장해준다.

그리고 post.objects.all()명령어로 확인해 준다.

 

-포스트 내용 확인하기

 

-포스트 등록날짜 확인하기

 

-저자 확인하기

 

-저자 이메일 확인하기

 

-유저가 생성한 모든 포스트 보기

 

-포스트 바로 생성하기

 

-exit() 명령어로 빠져나오기

 

7. blog.views.py dummy데이터를 방금 데이터베이스에 등록한 POST 바꿔주자

 

-models 있는 post import해준다.

 

-기존 dummy데이터를 통하던 context 데이터를 불러오도록 재설정 해준다.

 

8. python manage.py runserver 서버를 실행시켜 변경된 POST 확인해 준다.

 

9. 포스터에 년도,날짜,시간 등을 간편하게 변경시켜보자

-blog/template/blog/home.html 이동해준다.

-년도,날짜,시간을 표시하는 코드를 찾는다.

 

-아래와 같이 변경해준다.

 

-blog.views.py dummy데이터를 삭제해준다.

 

10. 현재 페이지에서는 post 없다. 추가 해주기 위해서 admin.py models 추가해줘야 한다.

 

-blog.admin.py 파일에서 아래와같이 추가해준다.

 

-admin page에서 post 생성된걸 확인할 수있다. 생성/삭제/업데이트도 가능하다.

 

GitHub : https://github.com/bellcastle88/Django-Website-Projectc