장고 기초에서 심화로! DRF를 배워보자!
장고 기초를 배우고 기초를 활용하여 장고 프로젝트를 만들어보는 시간을 가졌습니다.
이후 프로젝트가 끝이 나게 되고 장고 기초에서 더 나아가 심화 과정을 배우게 되었는데, 이때 배우기 시작한 것이 DRF(Django Rest Framework)였습니다.
그렇게 공부하게된 DRF는 처음 접해보는 것이기에 많이 어려웠습니다..
하루하루 따라가기가 벅찼지만 그래도 열심히 복습하고 이해하려고 노력했습니다.
하루가 끝날 때마다 연습을 할 수 있는 과제가 나왔지만, 직접 생각하고 코드를 짜기에는 DRF에 대한 이해도가 너무 낮은 상태였기 때문에 공부와 복습을 우선으로 하고 과제를 해보자는 생각을 했습니다.
DRF 공부를 진행하면서..
저번주에는 DRF를 들어가기 전에 이론적인 공부를 진행했습니다.
django의 rest_framework 모듈을 다운받고 적용하는 방법을 배웠고, 데이터베이스 용어 및 관계 키에 대한 것을 공부했습니다.
해당 내용을 정리하고 VSCode에서 가상환경과 장고 프로젝트를 만들어보고, 로그인과 로그아웃 기능을 다뤄보는 시간을 가졌습니다.
이후 정참조와 역참조, Serializer, Permission에 대해 배웠습니다.
정참조는 참조하려는 객체가 다른 객체와 관계되어 있거나 1:1 관계일 경우 사용하고, 역참조는 참조하려는 객체에 대해 명시되어 있지 않지만 다른 모델의 객체에서 참조하고 있는 경우에 그 객체를 참조하려는 경우에 사용한다.
역참조 시 _set을 붙이는 경우가 있는데, 필드가 Many-to-Many 관계로 설정되어 있거나 related_name 설정을 해줬다면 _set을 사용하지 않아도 된다는 것을 알게 되었습니다.
그리고 Serializer를 사용하여 request.data를 받고 Serializer에 적어준 model과 fields를 하나의 Serializer를 통해 쉽게 표현이 가능해지도록 만들 수 있었습니다.
Permission을 통해서는 사용 허가에 대한 조건들을 사용해보면서 공부하는 계기가 되었습니다.

추가로 데이터 검색 문법도 배워보면서 코드를 연습해보는 시간도 가졌습니다.
다음과 같은 것을 정리해보면서 연습했습니다.
get, filter, exclude를 사용할 때 같이 쓸 수 있는 Field Lookups 문법
: __contains : 특정 string이 포함된 object 찾기
: __startswith / __endswith : 특정 string으로 시작 / 끝나는 object 찾기
: __gt / __lt / __ gte / __lte : 크다(>) / 작다(<) / 크거나 같다(>=) / 작거나 같다(<=)
: __in : 특정 list에 포함된 object 찾기
kwargs 활용
해당 request.data를 다음과 같이 사용할 수 있다.
{"user": "user1", "password": "1234", "name": "유저1"}
→ Model.objects.create(**request.data)
정렬 (.order_by())
: order_by("이름") : 오름차순
: order_by("-이름") : 내림차순
: order_by("?") : 랜덤
쿼리 조건문(Q)
: and : &
: or : |
여러가지 앱도 추가해보면서 여러가지 설정도 해주고 연습하는 시간을 가졌습니다.

해당 연습 프로젝트에 대한 내용은 Github에서 확인할 수 있습니다.
Github : https://github.com/J1NU2/DRF_Practice
GitHub - J1NU2/DRF_Practice
Contribute to J1NU2/DRF_Practice development by creating an account on GitHub.
github.com
Quiz도 풀면서 DRF에 대해 복습하기!
DRF 강의를 들으면서 공부를 했지만 아직은 부족하다는 생각을 들었습니다.
강의를 따라가는 것도 힘들게 느껴지기도 했고 모르는 부분도 많아서 공부하는 과정이 많이 힘들었던 것 같습니다.
DRF 강의가 끝난 목요일과 금요일에는 여태 배웠던 것을 리마인드하면서 공부하는 시간과 아침에 퀴즈를 하면서 DRF 프로젝트를 만들어보는 연습을 했었습니다.
여기서 진행했던 아침 퀴즈가 DRF 강의에 대해 연습을 하던 것이기 때문에 아침 퀴즈에 적어둔 코드를 복기하면서 공부하는 시간을 가졌습니다.
Github Link
0623 : https://github.com/J1NU2/quiz_0623
GitHub - J1NU2/quiz_0623
Contribute to J1NU2/quiz_0623 development by creating an account on GitHub.
github.com
0624 : https://github.com/J1NU2/quiz_0624
GitHub - J1NU2/quiz_0624
Contribute to J1NU2/quiz_0624 development by creating an account on GitHub.
github.com
아침 퀴즈는 당일날에 완성시키지는 못했었지만 이후 DRF 강의 내용과 해설, 팀장님과 팀원분들의 도움으로 이해해가면서 코드를 완성하니 처음보다는 많이 좋아진 것 같다.
항상 도움을 주신 팀장님과 팀원분들께 감사하다는 말씀을 드리고 싶다.
이번주의 공부는 좀 어땠는가?
솔직하게 말하자면 기초를 공부할 때보다는 많이 어려웠던 것 같습니다.
장고 기초를 하면서도 views.py, urls.py, models.py 등등.. 여기저기 연결해주고 하는 과정이 헷갈리고 어려웠었는데, DRF를 공부하면서 serializers.py나 permissions.py가 추가되기도 했고 views.py에서 함수가 아닌 클래스를 사용해서 구성하는 과정이 처음 접하는 상황에서는 많이 헷갈려했던 것 같습니다.
그래서 이해하려고 강의 자료나 팀장님과 팀원분들의 도움을 많이 받았었고, 처음보다는 확실히 좋아진 것 같은 느낌이 들었습니다.
오늘도 팀장님께서 많은 도움을 주셔서 이해하는데 도움이 많이 된 상태이고, serializer 구성을 하는데 어려움을 느꼈던 처음때보다는 많이 좋아졌습니다.
이제 조금 이해했다고 그치는 것이 아닌 계속 복습해보면서 익숙해져야 할 것 같습니다.
'TIL 및 WIL > WIL (Week I Learned)' 카테고리의 다른 글
| [WIL] 22.07.04 ~ 22.07.08 (DRF 유화 제작 프로젝트 끝, 마지막 프로젝트 시작) (0) | 2022.07.08 |
|---|---|
| [WIL] 22.06.27 ~ 22.07.01 (DRF 유화 제작 프로젝트 진행 중) (0) | 2022.07.01 |
| [WIL] 22.06.13 ~ 22.06.17 (Django 추천 시스템 프로젝트 끝, 장고 심화 DRF) (0) | 2022.06.17 |
| [WIL] 22.06.06 ~ 22.06.10 (Django 팀 프로젝트 진행 중) (0) | 2022.06.11 |
| [WIL] 22.05.30 ~ 22.06.03 (Django 기초, Django 팀 프로젝트 시작) (0) | 2022.06.03 |