INSTALLED_APPS 순서
- 장고 내부 앱
- Third-party(갖다쓰는 앱)
- 내가 추가한 앱
순으로 배치하는 것이 좋다(필수는 아님)
Django-seed로 데이터 생성
모델은 만들었는데, 데이터 입력이 귀찮다... 임의의 데이터 자동으로 입력해줄 수 없나?
우선 django-seed를 받고
requirements에 freeze까지 해줌.
이제 seed를 만들어보자.
python manage.py seed articles --number=30 해주게 되면 -> 에러가 발생
psycopg2를 설치해주면 됨.
이후 다시 seed를 만들면 30개가 잘 만들어지는 것을 볼 수 있다.
Json Response
여태까지 우리는 html response를 진행했다. 이번에는 jason으로 받아보자.
articles/urls.py
우선 경로는 동일하게 설정
articles/views.py
뷰는 이런식으로 생성.
장고는 내부적으로 JsonResponse를 가지고 있음.
- 첫번째 인자는 우리가 완성한 json_articles 리스트.
- 두번째 인자는 첫번째 인자가 dict 형태이면 필요 없음, 지금은 리스트라 safe=False라고 해준다.
결국 우리는 DB에서 조회해온 객체 articles(쿼리셋)를 -> 직접 리스트를 만들어 Json 형태로 만들어 준 것임.
이런 식으로 표시된다.
와@@@@@@@@@@@@ 템플릿이 없다. 와@@@@@@@@@@
직렬화(Serialization)
객체 또는 데이터 구조를 저장, 전송을 위해 다른 포맷으로 변경하는 것.
데이터의 구조는 유지하면서, 추후 재구성이 가능한 포맷으로 변환.
방금 만든 뷰의 내용. 우리가 한게 직렬화다.
변수로 받은 articles는 쿼리셋 -> 이걸 전송 가능한 Json 형태로 바꾼 것이 바로 직렬화.
django도 내부적으로 다른 데이터 포맷으로 쉽게 직렬화 할 수 있는 기능을 제공한다.
articles/urls.py
우선 경로 만들고.
articles/views.py
res_data = serializers.serialize('json', articles) -> serialize에서 포맷은 json, 직렬화할 데이터는 articles
return HttpResponse(res_data, content_type='application/json') -> 서버에서 클라로 보내는 res에 content_type이 application/json이라고 명시하는 것.
이런 식으로 표시됨.
어 좋은데? 내가 직접 리스트니 딕셔너리니 안만들고 편하다. 무조건 이걸로 사용하면 되는거 아님?
예를 들어 클라이언트가 "pk니 뭐니 다른 데이터 필요 없어요. title이랑 content만 주세요." 라고 한다면?
serializers.serialize를 사용하면 포맷을 커스텀할 수 없음. 즉 유연하지 않다는 것.
모델의 구조에 serialize가 묶여 있다고 생각하면 되는 것.
결국 우리는 모델에 종속적이지 않고 유연하면서 사용하기도 편한 Serializer가 필요하다!
그 대표적인게 바로 DRF(Django REST Framework)
오늘의 회고
오랜만에 수업들으니 잠이 솔솔왔음.
솔솔가라 잠아.
내일 목표는 강의 마저 듣기
'매일 TIL' 카테고리의 다른 글
[내일배움캠프 11-1일] django 이해도 테스트 오답노트, ORM 최적화, 캐싱 전략 (0) | 2024.09.02 |
---|---|
[내일배움캠프 10-5일] DRF, POSTMAN, article CRUD, comment CRUD (0) | 2024.08.30 |
[내일배움캠프 10-3일] 팀프로젝트 발표 및 피드백 (0) | 2024.08.28 |
[내일배움캠프 10-2일] 팀프로젝트 최종 마무리, 제출 서류 작성 (0) | 2024.08.28 |
[내일배움캠프 10-1일] 팀프로젝트 부트스트랩 적용 (0) | 2024.08.26 |