Pipfile입니다. 관련 패키지들이 정의되어 있는데요. 가볍게 깔아주고 시작할게요.루트 설정 환경에서 url설정이 이루어지는데요. 아래 미디어 파일의 위치에 대한 매개변수 정의와 endpoint까지 settings.py를 통해 전달 되는게 보이네요. 관련 소스 코드
👩💻REST API가 뭔데요? Representational state transfer > URL을 이용해서 서버와 서로 의사소통하는 API! 예를들어 누군가가 /login 이라는 url로 간다면 당연히 로그인 페이지를 크롬에서 보여줄겁니다. 결국 res
drf패키지를 설치 할게요. pip install djangorestframework(or pipenv install djangorestframework프로젝트 셋팅 파일은 아래와 같이 수정합니다.core/views.py 파일을 삭제할게요. config/urls.py파
python object <--> JSON objectserializer는 기본적으로 데이터가 보여지는 방식을 json데이터 타입으로 정의하는 역할을 하는 녀석이에요. 모델을 가져가서 가져온 모델들을 검증과 함께 JSON객체로 바꿔주는거조.모델을 만들었던 것처럼
APIView vs generic viewAPIView의 경우 커스텀 로직을 가질 경우 사용하기 좋으며,(실제로는 API뷰는 꽤 많이 사용함) generic view의 경우에는 이미 DRF에서 만들어 놓은 사항을 끌어와서 접착 시키면 좋은 녀석입니다.ListAPIVie
앞 시간에는 APIView를 사용했는데요. 이번에는 ModelViewSet을 한 번 경험해 보겠습니다. 즉, viewset&router기능을 한번 사용해 볼게요. 앞서서 우리는 Serializer 클래스 -> ModelSerializer > APIView -> List
이전 시간에는 ViewSet을 이용하여 API를 얼마나 극대화하여 간결하게 작성할 수 있는지 확인했지만 다시 돌아와서 ModelSerializer를 이용해 기본부터 다져보조. users/serializers.py기존 TinyUserSerializer로 이름을 지었는데요
이전 작성하였던 APIView를 모두 지우고 근원적 로직에 대한 이해를 위해서 메뉴얼한 방식으로 회귀해보겠습니다.즉, 노가다 코딩에 가까운 방식을 쓰겠다는 거쥬.아! 참고해야 할 점은 자동으로 잡아줬던? 페이지네이션을 이제 일일히 작성해줘야된다는 말이에요.왜냐구요? g
validation에 대해 우선 이야기 해볼게요. django form과 비슷하게 작동하는게 이 validation이에요. validation FBV로 작성 아래 두가지 메서드를 구분해서 사용하는데요. validate(self, validated_data) val
room 하나에 대한 detail한 정보를 보여주기 위한 비즈니스 로직을 짜볼게요.get_room helper funcition을 만들건데요. get, delete, put 메소드의 중복된 코드가 발생되지 않게 ORM의 get()메서드를 사용했을 경우의 로직을 별도로
users앱을 더하여서 API와 url 연결로 넘어가도록 했어요.users/urls.py본인의 계정정보를 확인하고 수정하는 API를 작성 해볼게요.필요한 것들을 임포트 해줍니다. APIView로 작성하니 관련 된 것들을 상단에 일단 깔아 둘게요.이번에 정말 중요한 녀석
아래를 보면 그래서 하나는 작성용! 읽기용! 이렇게 구분해서 시리얼라이저를 작성한거에요.하지만 이렇게 2번 나눠서 작성하는 것 역시 파이써닉한 방법이 아니고 중복된 코드를 발생시키는 부분입니다.하나로 통합하고 이름도 더 포괄적으로 룸시리얼라이저로 개명했습니다. 여기서
이제 계정 생성을 위한 API를 만들어 보도록 하조.아래 3개 정도 만들 었어쥬?! WriteUserSerializerRelatedUserSerializerReadUserSerializer여기서 Related\~~ 시리얼라이저는 RoomSerializer에서 중첩 시리
우선 로그인 뷰는 FBV로 만들어 볼게요. 그 이유는 그렇게 복합적이고 많은 기능을 포함하지 않거든요. users/views.pyauthenticate(username=username, password=password)로그인을 해주는 장고 메서드입니다. auth모듈에서
search room 기능을 한 번 구현을 위한 몇가지 작업을 해볼게요. 왜냐하면 매우 구체적으로 우리가 필요한 로직 구현을 직관적으로 파악하기 위해서조.일단 url 맵핑을 해줄게요.아래 endpoint를 보면 페이지 네이션이 없어요. 왜냐하면 CBV에서 주는 페이지네
기본적인 장고 search API 구현이에요. 쿼리셋 파라미터를 받아오고, 딕셔너리를 이용해서 키:벨류로 짜놓은 다음에 쿼리 파라미터로 받아온 검색 조건을 딕셔너리에 할당한 다음 filter()메서드에 언패킹하면 되는 구조에요.작동원리는 아래와 같아요. 쿼리 파라미터에
이번에 해볼 것은 위도와 경도를 구하여 한 지점의 반경안에서 방을 필터링 하도록하는거에요.우선 구글 맵에서 어떻게 위도와 경도가 출력되는지 확인 해볼게요. 구글 맵 접속F12클릭 -> more tool버튼 클릭 -> sensor클릭아래와 같이 특정 도시를 선택하여 나의
'results'키에 새로우 value하나를 추가 해볼게요.바로 'isOnFavirite'라는 'isOnFavirite: true' 또는 'isOnFavirite: false'를 넣어서 해당 방이 나의 관심목록에 있는지 없는지를 나타내게 되요.즉, 누가 api/v1/r
rooms/views.py아래 73줄을 줄이도록 해볼게요. 10줄도 안되는 것 같은데요. 클래스 멤버변수 2개, 메서드1개(7줄), 임포트 2개위 70여줄이 이렇게 짧아진다는 점에서 얼마나 함축적이고 파워풀한지 알수 있습니다.여기의 모든 중심은 바로 ModelViewS
기본 라우터를 연결시켜뒀어요.RoomViewSet을 앞 시간에 만들었는데요. 이번에는 User APIView를 ViewSet으로 바꿀게요. 원리는 RoomViewSet과 동일해요.컨테츠의 수정과 삭제 권한은 누구나 가지고 있으면 안디기에 request.user를 통해서
config/settings.py배포 상황에서는 DEBUG 기능을 꺼줘야겠조?장고 환경 설정에서 REST_FRAMEWORK\['DEFAULT_RENDERER_CLASSES']에 JSONRENDER를 넣어줘야해요.DEBUG False로 해두게 되면 아래처럼 유저들은 보