왜 교수님이 일기라는 표현을 쓰셨는지 알겠습니다.
오늘 django로 이거 이거 해봤다. 라고 일기 쓰듯이 적으면서 다시 한 번 익혀나가는게 아주 좋은 것 같습니다.
이번에는 model을 만들어보도록 하겠습니다.
model에 modelForm serializer 정말 많은 것들을 배웠습니다만, 지금 당장에는 기억이 잘 나지 않는 것들이 많으니
일단 가장 먼저 model을 만들어 보도록 하겠습니다.
친절하게 from djang.db import models가 들어가있습니다.
바로 article 모델을 만들어보도록 하겠습니다.
django의 model에서는 거의 다 이미 import가 되어있는 models 안에서 처리할 수 있다고 생각하면 됩니다.
models 안에 CharField도, TextField도 다 들어있습니다.
이제 이 클래스를 DB에 연동을 시킬겁니다.
DB에 연동을 시키는 것을 migration이라고 하는데요, makemigrations 와 migrate 두 명령어를 사용해야합니다.
$ python manage.py makemigrations 을 터미널에 입력해줍니다.
articles 앱이 마이그레이션 된 것을 볼 수 있습니다.
$ python manage.py migrate 까지 해주면
기분 좋은 OK들이 잔뜩 뜨는걸 볼 수 있습니다.
이제 더미데이터들을 넣어볼 예정입니다.
django-seed를 이용하면 더미데이터를 넣을 수가 있습니다. 바로 설치해줍니다.
$ pip install django-seed 를 입력하여 django-seed를 다운받아주고, 바로 사용해보려고 하는데
네.. 사용 밥법을 까먹었습니다.
바로 docs를 찾아보려고 하는데 github가 docs네요 README를 읽어주도록 합시다.
settings.py에 django_seed를 넣어주라고 합니다. 바로 넣어주고,
이렇게 사용하라고 친절하게 나와있네요. 바로 터미널에 입력을 해주도록 합시다.
psycopg2가 필요하다고 하네요 이것도 다운로드 받아주도록 합시다.
$ pip install psycopg2 를 입력해서 psycopg2도 다운을 받고, 다시 한 번 사용해주면?
더미데이터들이 잘 들어간 것을 볼 수 있습니다.
이제 이 데이터들을 출력해보도록 하겠습니다.
다시 view로 가서 model을 불러옵니다.
objects.all을 이용하여 모두 가져와봤습니다. 과연 잘 출력이 될까요?
$ python manage.py runserver 를 입력해주
??????????
아이고 클래스 이름을 Model로 지어줬습니다 아이고...
Model을 Article로 바꾸고 다시 한번 마이그레이션을 합니다.
이름만 바꿔준거기 때문에 데이터는 살아있을겁니다.
다시 확인을 해주면!!
QuerySet은 JSON으로 serializable할 수 없다고 나오네요
이래서 필요한게 뭐다? Serializer다!!
바로 serializer를 사용하기 위해 rest_framework를 다운받습니다.
......
네 기억이 나지 않습니다.
가장 중요한 파트긴 한데, 계속 사용해줘야 하는 다른 것들과 다르게 api를 쏴주는 건 그렇게 많이 실습한 것도 아니었기에 충분히 까먹을 거 같았습니다.
하지만 바로 docs를 찾아주면 됩니다.
djangorestframework 라고 설치를 해야하군요 설치를 해줍니다.
settings에는 이렇게 넣어주고
그런 뒤, 이렇게 serializers를 이용하여 사용을 하면 된다고 합니다.
우린 ArticleSerializer를 만들겁니다.
article app에 serializer.py를 만들어 준 뒤 저대로 입력을 해봅시다.
근데 Hyperli 뭐시기...? 이런건 써 본 기억이 없습니다. vscode에게 맡겨봅시다
이거인것 같습니다... 안되면 그 때 docs 찾아서 다시 수정하면 되니까 vscode를 믿어봅니다.
serializer를 모두 작성했습니다.
자 이제 views에서 serializer를 사용해주어야 하는데 data도 넣고 이래저래 했던거 같은데 이것도 기억이 나지 않습니다.
docs를 믿어보도록 합시다
....???
제가 사용하던 방식이랑 전혀 다르게 사용이 되어지고 있습니다.
일단 저는 views에 Set을 만들지 않고 def 함수를 사용하는데...
일단 사용해보도록 하겠습니다.
네.. 여기서부터 막혔습니다. vscode를 믿는게 아니었네요 다시 수정을 해보도록 합니다
docs를 돌아다녀보니 드디어 제가 공부했었던 것과 유사한 형태의 코드가 적혀있는 문서를 발견했습니다.
docs를 볼 때는 getting started를 가장 먼저 보라는 교훈을 얻었습니다.
다시 작성해주도록 합니다.
serializers.models는 무슨 ㅡㅡ vscode 믿지 말고 docs를 믿읍시다
근데, 우린 이미 model이 있는데... 왜 여기서 다시 필드들을 정의하고 있을까요?
docs를 좀 더 내려봅시다.
빙고!!
드디어 원하던 것을 찾았습니다. ModelSerializer를 사용하면 되는거였네요!!
ModelSerializer를 사용하고나서 다음 튜토리얼 페이지로 넘어갑니다.
편안... 이게 제가 원하던 코드였습니다
바로 카피해주도록 합시다
이제 다시 페이지를 확인해보면?
DRF가 잘 작동하면서 동시에 제가 만들어둔 더미데이터들도 모두 잘 출력되는 것을 볼 수 있습니다
이제 django에서 serializer를 이용하여 json 데이터를 뿌리는 방법을 모두 다시 상기했으니, api를 내려주는 건 문제가 아닐 것 같습니다