분류 전체보기
-
객체 지향 프로그래밍(OOP) 시리즈 - 객체 지향 프로그래밍이란?개발에 필요한 기초 지식 2022. 1. 23. 23:57
위코드에서 수업도 듣고 2번의 프로젝트도 진행하면서 많이 들었던 단어 중 하나가 "객체 지향 프로그래밍"인데 대체 Object-Oriented Programming 이란 무엇이며 그걸 왜 쓰는것인가에 대해 쓰고자 합니다. 객체 지향 프로그래밍(OOP)이란 무엇이며 왜 등장했을까? OOP 등장 이전에는 절차 지향 프로그래밍이 있었습니다. 순차적인 처리를 중요시하며 컴퓨터의 작업 처리 방식과 유사하기에 작업 시간이 빠르단 것이 장점입니다. 하지만 하드웨어의 폭발적인 성장에 비해 기존의 방식으로 거대해지고 복잡해진 소프트웨어를 설계하는 것에 어려움이 많았습니다. 이 때 OOP가 등장했습니다. OOP란 프로그래밍에 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 ..
-
Python shell - help 기능Python 2022. 1. 16. 21:06
코드를 짜면서 mysql에서 원하는 데이터를 불러오려면 어떻게 입력해야 하는지 고민을 많이 하게 됩니다. 때로는 컴퓨터에게 "내가 product의 id를 알고 있는데 너한테 어떻게 알려주면 tag_name을 알려줄래?" 라고 얘기하면서 바로바로 의사소통을 하고 싶어질 때가 정말 많습니다. 프로젝트하면서 너무 어려웠을 때 PR 하면서 제목에 [HELP]라고 남겼던 적도 있었습니다.. 이번에 아래의 view 작성할 때 제가 원하는 데이터에 어떻게 접근해야 하는지 너무 막막해서 python의 shell에서 열심히 쳐보다가 help라고 써봤습니다. 그러자 python이 제게 응답했습니다!! Python : "help(객체) 이런 식으로 알려줘" 바로 help(Product) 라고 입력해봤습니다! 모델링을 옆에 ..
-
list comprehension 중복 제거 - Object of type set is not JSON serializablePython 2022. 1. 16. 14:56
class ProductListView(View): def get(self, request, *args, **kwargs): tagcategory = request.GET.get('tagcategory', None) tag = request.GET.get('tag', None) user_type = request.GET.get('user_type', None) q = Q() if user_type: q &= Q(user__user_type__name=user_type) if tagcategory: q &= Q(producttag__tag__tag_category__name=tagcategory) if tag: q &= Q(producttag__tag__name=tag) products = Product...
-
카카오 소셜 로그인 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에 인덱싱을 사용해서 값을 ..