Django
-
select_related 와 prefetch_relatedDjango 2022. 4. 2. 15:41
HTML 삽입 미리보기할 수 없는 소스 1. 1차 프로젝트를 통해 정참조, 역참조 개념 정리 2. 2차 프로젝트를 통해 데이터를 불러올 때의 편의성을 고려하는 것이 중요하단 것을 깨달음 - 처음 프로젝트를 진행하시는 분들은 무슨 말인지 모르실 수 있을 텐데 직접 그 불편함을 겪으신 후에 이에 대해 학습하고 개선하시는 게 좋은 경험이 될 것이기에 저처럼 모른 상태에서 시작하시는 것도 좋다고 생각합니다.ㅎㅎ 3. 기존 프로젝트들의 데이터가 워낙 적었고 기능 구현하기 바빠서 Query에 대한 고려를 하지 못 했었기에 이번에 select_related 와 prefetch_related 에 대해 학습하고 이를 이번 과제에서 ..
-
카카오 소셜 로그인 API - update_or_create()Django 2022. 1. 15. 17:38
2차 프로젝트에서 카카오 로그인 API를 맡아서 진행하고 있습니다. 카카오 소셜 로그인으로만 회원가입과 로그인이 가능하게 기획한 후에 코드를 짜기 시작했습니다. 카카오로부터 전달받은 인증 코드를 프론트가 백에게 전달해주면 백에서 카카오에게 이 인증 코드를 보내고 카카오가 유효성 검증 후에 이상이 없으면 토큰을 백에게 보내주고 이 토큰을 백에서 우리 서버 전용 토큰으로 발급해서 프론트에게 전달해주는 과정입니다. 사실 위에 그림은 Kakao Developers 문서에 있는 것인데 전체적인 과정을 이해하기에는 좋으나 프론트와 백으로 나눠서 보기에는 다소 이해하기 어려운 부분이 있었습니다. 아래의 글을 통해서 보다 쉽게 이해할 수 있었으니 참고 부탁드립니다. 그래서 전체적인 과정부터 이해하신 후에 코드를 시작하..
-
ValueError: The QuerySet value for an exact lookup must be limited to one result using slicingDjango 2022. 1. 9. 23:08
1차 프로젝트 중에 발생했던 ValueError입니다. 문제는 해결했으나 그 당시에 왜 이런 문제가 발생했는지 이해되지 않아서 캡쳐해두고 지금 다시 읽어보니 이제 이해가 됩니다. ValueError: The QuerySet value for an exact lookup must be limited to one result using slicing. 아래의 코드에서 26번째 줄에 filter를 사용해서 product_option이 QuerySet이 되었습니다. 그런데 32번째 줄의 filter에서 조건으로 QuerySet을 입력해서 생기는 문제였습니다. 그래서 처음에는 29번째 줄에서 stock 값을 가져올 수 없어서 임시 방편으로 값을 가져오기 위해서 product_option에 인덱싱을 사용해서 값을 ..
-
ManyToManyField 사용법 및 장점Django 2022. 1. 9. 20:16
1차 프로젝트 진행 중에 팀원분께서 제품 상세페이지를 맡아서 진행 중이셨는데 위의 products 테이블의 id 값을 받아서 sizes 테이블의 값 불러오는 것을 어려워하셨습니다. 위의 모델링을 기반으로 하여 사이즈 값을 가져오려면 아래처럼 복잡한 과정을 거쳐야 가능하다고 생각합니다. 주의해야 할 부분 1. 조건에 해당하는 결괏값들이 여러 개일 거라 생각해서 filter를 사용했으니 기본적으로 QuerySet으로 나올 것이라고 예상해야 합니다. QuerySet의 경우에 어떻게 QuerySet을 제거하고 안에 든 값만 뺄 수 있을까 엄청 고민하면서 이것저것 시도해보다가 위와 같은 경우에서는 product_list[0]을 찍어보는 게 도움이 되었습니다. QuerySet에 대해 공부하셔도 헷갈리시다면 저처럼 ..
-
TypeError : Field 'id' expected a number but got <User : User object (1)>Django 2022. 1. 5. 08:32
사이드 프로젝트로 'Zara' 클론 코딩을 하고 있습니다. 그중에서 장바구니 앱을 하던 중에 마주한 에러 메시지에 대해 알아보고자 합니다. 대부분의 에러메세지가 그렇지만 특히 이번 것은 조금만 읽어보면 에러 메시지에 답이 다 담겨 있습니다. 제가 'id'에 해당하는 값(number)을 불러오겠다 하고 그곳에 'User' 객체를 가져와서 생긴 에러 메시지입니다. 장바구니 앱을 처음 작성해본 것이라 지저분하고 불필요한 부분이 많아서 보시기 불편하시겠지만 조금 양해 부탁드립니다. 에러 메시지가 발생한 이유와 어떻게 그리고 왜 이렇게 해결된 건지를 집중적으로 보신다면 좋을 것 같습니다. 장바구니 앱을 모델링한 것입니다. 처음에 유저 1명당 장바구니를 1개만 활성화시키고 싶어서 1:1 관계인 OneToOneFie..