✔️ Django 웹 개발
이번에는 여러가지 테스트 데이터를 추가하는 방법에 대해 알아보겠다.
그러기 위해서 우리는 과거에 작성했던 글들을 모두 삭제해준다.
삭제 완료!
지금 이 상태에서 포스트 목록 페이지가 날 나오는지 테스트를 하고 싶다면 어떻게 해야 할까?
현재 아무런 게시글이 없기 때문에 글쓰기 버튼을 눌러서 밑에 처럼 글을 써주면 된다.
결과는?
이렇게 우리가 추가한 게시글이 잘 나타난다.
그런데 만약에 글이 50개가 넘어도 잘 나오는지 테스트를 하고 싶다면 지금 우리가 한 것처럼 하나씩 글을 써서 테스트 하기에는 힘들것이다.
왜냐하면 아까 했던 글쓰기 작업을 50번이나 반복을 해야하기 때문이다.
이렇게 우리 서비스에서 사용할 데이터를 데이터베이스에 추가하는 걸 시딩이라고 한다.
지금처럼 테스트에 필요한 데이터를 준비하거나, 서비스에 필요한 초기 데이터를 입력해야 하는 경우에 유용한 방법이다.
django 에서 시딩은 하나의 파일에 데이터를 두고 manage.py 에 loaddata 명령어를 이용해서 실행할 수 있다.
출처 : 코드잇
이 때 시딩을 위해 데이터가 들어있는 파일이 필요한데 이러한 seed_file 은 JSON, XML 등의 파일 형식을 사용할 수 있다.
우리는 JSON 형식을 사용해보자!
그럼 먼저 시딩에 사용할 JSON 형식의 데이터 파일을 만들어야 한다.
JSON 은?
예를 들어 우리가 사용했던 글을 JSON 형식으로 간단하게 만들어본다면 중괄호를 쓰고 사전형과 비슷하게 name 을 적어주고, 그 다음에 name 에 해당하는 값을 적어주면 된다.
출처 : 코드잇
그러면 위의 코드에서 title 이라는 name 으로 value 에 접근을 할 수 있게 되는 것이다.
그리고 글 내용도 이렇게 name 과 value 형식으로 적을 수 있다.
그런데 이런 데이터를 중첩을 이용해서 이런 식으로 적을 수 있다.
출처 : 코드잇
data_01 이라는 name 에 또다시 사전형 데이터로 title 과 content 를 넣을 수 있다.
출처 : 코드잇
그리고 위의 코드처럼 접근을 하면 data_01 이라는 값을 얻을 수 있다.
이런 식으로 같은 데이터라고 해도 다양한 형태와 계층으로 JSON 을 표현할 수 있다.
내용물은 같지만 구조가 다른 것이다.
정리해보자면...
그러면 한 번 생각해보면 작성하는 사람마다 다른 형식으로 데이터를 작성하면 django 가 어떤 구조로 작성된 JSON 형식인지 모르기 때문에 데이터를 파악하기 힘들 것이다.
그리하여 django 가 읽을 수 있는 구조로 JSON 을 작성해야 되는데 구조를 알아보는 가장 좋은 방법은...
django 로부터 데이터 하나를 JSON 형식으로 추출해보는 것이다.
그러면 우리도 한 번 해보자!
우선 포스트 페이지에서 게시글을 다 삭제해주고 새롭게 글을 하나 써준다.
제목은...
title_data_01
내용은...
content_data_01
이렇게 적어준다.
다음에 VSCode 로 가서 새로운 터미널을 켜주고 다음과 같이 커맨드를 입력해준다.
python3 manage.py dumpdata
그리고 끝에 posts 한 다음에 > 하나 넣어주고 posts_data.json 을 넣어준다.
python3 manage.py dumpdata posts > posts_data.json
이 명령어는 django 프로젝트의 데이터를 파일로 추출하는 명령어인 dumpdata 를 이용해서 데이터를 JSON 파일로 추출하는 것인데...
실행을 하면...
이런 식으로 JSON 파일이 하나 생긴다.
파일을 열어보면 데이터가 들어있기는 한데 조금 구조가 불편하게 생겼다.
여기에 읽기 편하게 들여 쓰기를 넣어주도록 해준다.
그러면 다시 터미널로 가서 똑같이 dumpdata 까지 작성해주고...
python3 manage.py dumpdata
끝으 posts 한 다음에 대시 두 개를 넣어주고 indent=2 한 다음에 아까와 마찬가지로 > 를 하고 posts_data.json 을 작성해준다.
python3 manage.py dumpdata posts --indent=2 > posts_data.json
그러면 이번에는 이런 식으로 이쁘게 들여 쓰기가 두 칸씩 돼서 출력이되었다.
데이터를 살펴보면 이 큰 리스트 안에...
이런 식으로 데이터가 들어가 있다.
이 형식을 지켜서 우리가 데이터베이스에 넣어줄 데이터를 적어주면 된다.
데이터를 두 개더 만들어준다.
리스트이니까 반점을 찍어주고 밑에처럼 두 개를 복사해서 붙여넣어준다.
그 다음에 하나씩 수정을 할 것인데 pk 같은 경우에는 게시글이 가지고 있는 고유한 번호니까 1씩 늘려주고...
제목과 내용 또한 숫자 1씩 올려준다.
다음에 생성일이란 생성 시간도 조금 수정해주면...
이렇게 임의로 넣어주도록 해준다.
데이터파일이 준비가 되었다면 이 데이터 파일을 데이터베이스에 넣어주면 된다.
한 번 해보자!
새로운 터미널을 켜주고 이번에는 다른 커맨드를 입력해준다.
python3 manage.py loaddata
그리고 끝에 파일의 이름인 posts_data.json 을 넣어주고 엔터를 누르면...
python3 manage.py loaddata posts_data.json
이렇게 세 개의 데이터가 들어갔다고 알려준다.
다음에 개발 서버를 키고 확인을 해본다.
웹 페이지로 돌아가보면 우리가 입력한 데이터가 이런 식으로 잘 들어가 있는 것을 알 수 있다.
끝으로 :
이번 시간에는 웹 서비스의 테스트를 위해 필요한 데이터나 서비스에 필요한 초기 데이터를 추가하는 방법인 시딩에 대해 알아보았다.
그리고 django 가 다룰 수 있는 데이터 포맷 중 하나인 JSON 에 대해 알아보고 dumpdata 와 loaddata 를 이용해서 데이터를 추출하고 추가도 해보았다.
이제 우리는 관리자 도구나 웹 서비스에서 하나씩 추가하지 않아도 배운 시딩을 이용해서 원하는 데이터를 마음대로 추가할 수 있다.