전체 글 217

generics.ListCreateAPIView

generic이란 무엇인가? 제네릭 뷰는 장고 프레임워크에서 제공하는 재사용 가능한 View 클래스. 장고 프레임워크에서 제공하는 재사용 가능한 뷰(View) 클래스 DRF의 제네릭 뷰는 장고의 제네릭 뷰와 유사한 기능을 제공하면서, Restful API 개발에 특화됨. 제네릭 뷰는 일반적으로 HTTP Method에 따라 다양한 동작을 수행함. 상속을 통해 확장할 수 있음. 필요한 메소드를 오버라이딩하거나 추가하여 customize할 수 있다. >> 기존의 제네릭 뷰를 활용하면서 특정한 동작이나 로직 추가 가능. ListCreateView란 무엇인가? DRF에서 제공하는 제네릭(Generic) 뷰 중 하나 Restful API에서 컬렉션(Collection)을 나타내는 모델의 리스트를 생성하고 조회할 수..

Framework/Django 2023.06.19

6월 3주차 WIL

최종프로젝트가 어느덧 2주차도 지나갔다. 많은 기획을 외우는 것은 늘 어려운 일이었기 때문에 기획을 꼼꼼히 문서화하는 작업과 그 문서를 이해하는 데는 집중력이 필요했다. 그런 점에서 집중력이 부재했기 때문에 이번 주는 혼자 먼 길을 돌아서 가는 기분이었다. ERD와 API 간의 상관관계를 그 과정에서 직접 오류를 맞이하고 깨달아가면서 가는 기분이 정말 색달랐다. 그 동안 너무 수동적이었던 건 아니었을까? 물론 적당히 도움을 받았기 때문에 이번 주의 성과가 이루어질 수 있었지만 아무 것도 모른다는 이유로 배움의 자세에서 보다 소극적이었던 것 같다. path( "like//", views.LikeView.as_view(), name="like" ), # 좋아요 생성 - 완료 를 제대로 반영하기 위해서 함수 ..

Weekend I learned 2023.06.19

MtoM 마이그레이션 오류(through 옵션)

ManytoManyField로 정의한 Article 테이블 내의 like, bookmark 모델은 users 앱의 User 모델과 MtoM의 관계를 가진다. 본래는 through = ' ' 를 설정해서 해결했지만 굳이 중간모델을 만들지 않아도? MtoM 관계를 만들면 알아서 중간모델을 만들어준다는 것을 알아내고 through를 없애고, related_name을 팀 코드 컨벤션에 맞춰서 고친 다음 마이그레이트를 해보았다. Makemigrations는 이상 없이 잘 되었는데.. Migrate에서 달달하게 에러가 생겼다. 아랫줄은 에러코드의 핵심이다. 그럼 얘가 무엇을 의미하는지? 알아보았다. ValueError: Cannot alter field articles.Article.like into article..

Framework/Django 2023.06.16

DRF Response()

Response : 응답 : 클라이언트에서 받은 요청을 조건에 맞게 보내는 것 아래 코드에서도 보면 꼭 마지막에 응답을 보낸다. class ArticleDetailView(APIView): def get(self, request): article = get_object_or_404(Article, id=id) serialize = ArticleSerializer(article) return Response(serialize.data, status=status.HTTP_200_OK) 그럼 이 응답은 늘 이런 것들만 고정적으로 보내주는 걸까? 사실 이것에 대해 잘 몰랐는데, Response에 ctrl + click을 해주면 Response에 대해 간략하게 설명해주는 창으로 넘어가진다. 아래는 class Re..

Framework/Django 2023.06.16

FBV 와 CBV 차이점

FBV(Function-Based-View) 함수 기반 View 코드를 간단히 쓸 수 있음 그러나 코드를 확장, 재사용하는 등 유지 보수에 있어 좋지 않음 조건문으로 HTTP 메소드 구분해야하는 단점 CBV(Class-Based-View) 클래스 기반 View GET, POST 등 HTTP 메소드에 따른 처리 코드를 작성할 때 if 함수 대신에 메소드 명으로 코드의 구조가 깔끔하다. 다중상속 같은 객체지향 기법을 활용해 Generic View, Mixin Class 등을 사용 코드의 재사용과 개발 생산성을 높여준다. View 안에서 같은 코드를 반복적으로 사용하지 않는다. 403, 404, 500 에러 핸들링에는 CBV를 이용하지 않고 FBV를 이용한다.

Framework/Django 2023.06.16

DRF Docs 입문

Docs에 대한 중요성을 나날이 인지하면서 결국 Docs에 대해 꾸준히 공부해야겠다는 마음을 가졌다. 이번에는 Docs에 대해 공부해보았다. 공부한 사이트 Home - Django REST framework www.django-rest-framework.org DRF를 쓰는이유 웹 브라우저 가능한 API는 개발자들에게 큰 유용성을 가져다 줍니다. OAuth1a 및 OAuth2용 패키지를 포함한 인증 정책. ORM 및 비 ORM 데이터 소스를 모두 지원하는 직렬화. 사용자 정의가 가능합니다. 보다 강력한 기능이 필요하지 않다면 일반 기능 기반 보기를 사용하기 광범위한 문서와 훌륭한 커뮤니티 지원. Mozilla, Red Hat, Heroku, Eventbrite 등 세계적으로 유명한 기업에서 사용하고 신뢰..

Framework/Django 2023.06.15

CookAI 기획

내일배움캠프에서 벌써 최종 프로젝트를 맞이했다. 이번 기획은 무려 5주치, 그래서 많은 기획 내용이 필요했고 다행히 많은 팀원 분들의 아이디어로 기획시간이 빼곡히 지나갔다. 사실 기획은 저번 주 월, 수에 걸쳐서 진행했지만, 워낙 서버 작업이 바빴던 탓에 지금에야 올린다. 프로젝트 명 : CookAI 이번 프로젝트를 통해 우리의 식탁 등 레시피를 제공하고, 개인화된 재고 관리 서비스와 개인화된 레시피 추천 서비스를 제공하는 것이 우리 프로젝트의 목표이다. 또한 팀원들 개개인이 능력 향상을 이루고 싶은 점은 다음과 같다. 머신러닝 라이브러리 활용 프론트엔드와 백엔드의 분리 aws를 이용한 서비스의 배포 완주까지 주체적인 기술적 의사결정 및 협업 경험 체득 와이어프레임은 다음과 같이 웹과 모바일 반응형을 목..

project/project 2023.06.13

API POST 코드 공부 (쿠팡)

API를 사실 다른 분이 만드는 것만 계속 바라봤는데, 이번에 코드 공부를 좀 해보았다. import hmac import hashlib import requests import json from time import gmtime, strftime REQUEST_METHOD = "POST" # 요청 방식 설정 DOMAIN = "https://api-gateway.coupang.com" # API 도메인 URL = "/v2/providers/affiliate_open_api/apis/openapi/v1/deeplink" # 요청을 보낼 엔드포인트의 경로 # Replace with your own ACCESS_KEY and SECRET_KEY ACCESS_KEY = "xxxxxxxx-xxxx-xxxx-xxx..

Framework/Django 2023.06.13

6월 2주차 WIL

이번 주차에는 내배캠 최종프로젝트를 시작했다. 기간은 총 5주인데, 1주일씩 미니프로젝트만 진행한 나에겐 훌쩍 길어진 기간이라 어떤 식으로 기획을 할지 참 어려웠다. 다행히 팀원 분이 상당히 많은 아이디어들을 가져와서, 오히려 그 아이디어들을 매끄럽게 하는 데 있어 도리어 시간이 많이 걸렸다. 기획과 정리 캠프를 하는 매 순간마다 새로운 것을 익혀나가고, 실천해야 하기 때문에 한 순간도 익숙한 적이 없었다. 그러한 부분에서 이번 주의 새로운 것은 양에 대한 교통정리였다. 많은 아이디어를 ERD 모델로 정리하는 것과, 그것을 API 명세로 표현하는 것은 복잡하면 복잡할수록 나에게는 제곱으로 다가오는 기분이었다. 원래도 ERD에 약했지만, 익숙해지지 않은 상태에서 ERD를 맞이하니 더 팀원에 의지하게 되었다..

Weekend I learned 2023.06.12

[트러블 슈팅] 인코딩 에러

이번 코드에러는 다음과 같다. 오류 이슈를 보고 다음과 같이 생각했다. 1. dotenv에서 문제가 생긴 건가? 2. DecodeError인 것을 보니 파이썬 용어로 인코딩, 디코딩 하는 과정이 문제인가? 1번의 경우 혹시나 dotenv가 깔려있지 않은데 내가 .env를 생성해서 그런 걸까?라는 생각을 했다. 하지만 dotenv는 정상적으로 깔려 있었고, lock과 toml에도 큰 문제는 없었다. 2번의 경우가 사실 가능성은 크다고 생각했다. 그래서 모든 주석들을 꼼꼼히 확인했는데 큰 이상이 없었는데, dotenv에 주석을 달았던 게 생각났다. 이 주석을 지우니.. cp949 error를 벗어날 수 있었다. dotenv에는 주석 달기 금지

Framework/Django 2023.06.11