티스토리 뷰
[1] ModelSerializer 개념
django rest framework의 ModelSerializer 에 대해 먼저 알아보겠습니다.
ModelSerializer은 모델을 JSON으로 쉽게 바꿀 수 있도록 해주는 것입니다.
예를 들어 Account라는 모델이 있다고 할때 (문서에 모델 선언해둔 것은 없네요ㅠㅠ)
AccountSerializer를 만들어서
내가 원하는 모델의 필드들만 json으로 만들어줄 수 있어요
모델의 모든 필드를 다 json으로 만들어줄 거라면 __all__ 을 해줄 수 도 있고
특정 필드만 제외하고 싶다면 exclude 해줄 수 도 있답니다.
그리고 nested json을 만들고 싶으면 depth 옵션을 사용할 수도 있습니다.
(장고 튜토리얼과 다르게 장고 rest framework 문서는 불친절해서 depth에 대한 다양한 예제나 상세한 설명은 없고 위의 예제가 끝이네요,,,)
[2] 모델 만들기
question 앱의 models.py에 들어가서
모델을 하나 만들어줍니다.
참고로 장고는 모델에 primary key인 필드를 명시하지 않으면
primary key인 id라는 필드를 자동으로 만들어줍니다.
[3] 모델 Serializer 만들기
그 다음 question앱에 serializers.py 라는 파일을 만들어주세요
그리고 Question모델에 대한 Serializer를 만들어줍니다.
Question모델의 모든 필드를 json으로 만들겠습니다. (이렇게 하면 위에서 말한 id도 같이 json에 나옵니다)
[4] 파이썬 쉘에서 JSON 출력해보기
일단 파이썬 쉘을 실행시켜주세요
python manage.py shell
쉘에 아까 만든 시리얼라이저랑 모델을 import 해줍니다.
from question.serializers import QuestionSerializer
from question.models import Question
이렇게 serializer를 만들고 data를 출력해보면..!!
question = Question(title="안녕하세요 질문입니다")
serializer = QuestionSerializer(question)
serializer.data
json이 잘 출력되는 것을 볼 수 있습니다.
(모델이 DB에 저장이 안되어서 id가 None으로 나오는 것 같아요)
control+D 또는 quit()을 입력해서 파이썬 쉘을 종료합니다.
[추가] - id를 안나오게 해주려면
만약 id가 나오는 게 싫다면 두가지 방법 중 하나로 해줄 수 있겠습니다.
[추가] - 리스트 형태의 json을 내려주고 싶다면
'🐍 > DRF' 카테고리의 다른 글
[PythonAnywhere] 장고 admin 페이지 CSS가 안먹을때 (0) | 2020.09.13 |
---|---|
[PythonAnywhere] 장고 rest API 배포하기 (0) | 2020.09.11 |
[DRF] get 요청받는 API 만들기 (2) (0) | 2020.09.11 |
[DRF] get 요청 받는 API 만들기 (1) (0) | 2020.09.10 |
[DRF] 프로젝트 세팅 (0) | 2020.09.10 |
- Total
- Today
- Yesterday
- METAL
- Django Firebase Cloud Messaging
- flutter 앱 출시
- Watch App for iOS App vs Watch App
- 플러터 싱글톤
- PencilKit
- 장고 Custom Management Command
- DRF APIException
- flutter deep link
- cocoapod
- 플러터 얼럿
- Flutter Spacer
- github actions
- Sketch 누끼
- Django Heroku Scheduler
- 장고 URL querystring
- flutter dynamic link
- drf custom error
- Flutter getter setter
- 구글 Geocoding API
- Flutter Clipboard
- SerializerMethodField
- ribs
- ipad multitasking
- Django FCM
- Python Type Hint
- Flutter 로딩
- Flutter Text Gradient
- flutter build mode
- Dart Factory
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |