📌 Django ORM 완전 정복: 정참조, 역참조, select_related, prefetch_related, __문법 총정리
·
기술블로그-Django편
📌 Django ORM 완전 정복: 정참조, 역참조, select_related, prefetch_related, __문법 총정리1️⃣ 정참조 vs 역참조 개념 정리구분 설명 Django 코드 예시✅ 정참조모델이 ForeignKey를 직접 가지고 있는 경우Blog.author → ForeignKey(Author)🔁 역참조다른 모델에서 자신을 ForeignKey로 참조한 경우Author.blog_set 또는 Author.blogs💡 정참조는 "가지고 있는 쪽", 역참조는 "참조당하는 쪽"으로 생각하면 이해가 쉽습니다.2️⃣ select_related vs prefetch_related메서드 사용 대상 SQL 방식 사용 시기select_related()정참조JOINForeignKey를 가지고 있는 모델..
🧩 Django 댓글 API 흐름 완전 정복
·
기술블로그-Django편
🧩 Django 댓글 API 흐름 완전 정복🎯 목표특정 블로그 글에 달린 댓글만 조회하는 API의 흐름을 시각적으로 이해하자!🛠️ 사용하는 클래스class CommentListCreateAPIView(ListCreateAPIView): queryset = Comment.objects.all() serializer_class = CommentSerializer permission_classes = [IsAuthenticatedOrReadOnly] def get_queryset(self): queryset = super().get_queryset() blog = self.get_blog_object() return queryset.filter(..
🧠 DRF와 Form 방식의 코드 생성 흐름 차이 - 왜 staticmethod를 써야 하고, commit=False를 쓰는가?
·
기술블로그-Django편
🧠 DRF와 Form 방식의 코드 생성 흐름 차이 - 왜 staticmethod를 써야 하고, commit=False를 쓰는가?Django 개발을 하다 보면 URL 생성기 같은 로직에서 아래와 같은 두 가지 방식의 차이를 보게 됩니다:DRF에서는 serializer.save(code=code)로 code를 전달Form에서는 form.save(commit=False) 후 code를 삽입하고 .save()이 차이의 구조적 이유와 왜 staticmethod를 써야 하는지, 정리해봅니다.✅ 1. DRF에서는 왜 @staticmethod를 써야 하나?code = ShortURL.generate_code_two()short_url = serializer.save(code=code)📌 이유:DRF에서 .save(..
🧪 Django shell로 클래스/메서드 유효성 확인하는 방법 총정리
·
기술블로그-Django편
🧪 Django shell로 클래스/메서드 유효성 확인하는 방법 총정리Django 개발 중 특정 클래스나 매니저, 메서드가 현재 버전에서 존재하는지, 호출 가능한지 확인하고 싶을 때, shell에서 직접 검증하는 방법을 정리합니다.✅ 1. 기본 흐름 요약단계 설명 예시 명령어1단계shell 진입python manage.py shell2단계클래스 임포트from django.contrib.auth.models import BaseUserManager3단계dir() 확인dir(BaseUserManager)4단계hasattr()로 유무 체크hasattr(BaseUserManager, 'make_random_password')5단계직접 호출 테스트BaseUserManager().make_random_passwo..
🔐 Django에서 make_random_password() 오류 해결기 (Django 5.x 대응)
·
기술블로그-Django편
🔐 Django에서 make_random_password() 오류 해결기 (Django 5.x 대응)🧨 1. 문제 상황 요약소셜 로그인 회원가입 시 다음 코드에서 오류가 발생:user.set_password(User.objects.make_random_password())발생한 오류:AttributeError: 'UserManager' object has no attribute 'make_random_password'🔍 2. 오류 원인 분석항목 설명Django 버전5.2.1User 모델커스텀 User 모델 사용 (AUTH_USER_MODEL = 'member.User')문제 원인Django 5.x부터 make_random_password()가 BaseUserManager에서 삭제됨영향User.obj..
📘 Django에서 as_view()가 필요한 이유 - FBV vs CBV 완전 정리
·
기술블로그-Django편
📘 Django에서 as_view()가 필요한 이유 - FBV vs CBV 완전 정리✨ 1. 질문 요약❓ FBV(Function-Based View)는 path()에 그냥 함수 이름을 넣는데,CBV(Class-Based View)는 왜 꼭 .as_view()를 붙여야 하나요?🧠 2. 핵심 비교 요약항목 FBV (함수 기반 뷰) CBV (클래스 기반 뷰)뷰 타입함수 (def)클래스 (class)URL에 연결 방식my_viewMyView.as_view()호출 시 동작직접 호출내부 메서드 (get, post)에 매핑됨.as_view() 필요 여부❌ 필요 없음✅ 필수🔍 3. FBV: 함수 기반 뷰 예시def hello_view(request): return HttpResponse("Hello Worl..
🔐 Django signing.dumps() 완벽 이해하기
·
기술블로그-Django편
🔐 Django signing.dumps() 완벽 이해하기✨ 1. 개념 정리: signing.dumps()란?signing.dumps()는 Django에서 제공하는 **"데이터 위변조 방지 도구"**입니다.데이터를 base64로 인코딩하고,서버 비밀 키로 서명(Signature)을 붙여누군가 데이터를 조작하지 않았는지 확인할 수 있게 해줍니다.🔸 단, "암호화"는 아닙니다. 누구나 내용은 볼 수 있지만, 조작은 못 합니다.🧪 2. 간단한 예시로 보기from django.core import signingNAVER_STATE = "naver login"# ✅ 데이터에 서명 붙이기signed_state = signing.dumps(NAVER_STATE)print(signed_state)# 출력 예시: ..
📌 OAuth2 & 네이버 소셜 로그인 흐름 완전 정리
·
기술블로그-Django편
📌 OAuth2 & 네이버 소셜 로그인 흐름 완전 정리🔐 OAuth2란?OAuth2는 웹/모바일 애플리케이션이 사용자의 비밀번호를 알지 않고도 외부 서비스의 데이터에 접근할 수 있게 해주는 인증/권한 부여 프레임워크입니다.구성요소 설명Resource Owner로그인하는 사용자 (리소스 소유자)Client사용자 대신 API 요청을 보내는 애플리케이션Authorization Server인증 및 토큰 발급 담당 서버Resource Server실제 API와 데이터를 보유한 서버주요 토큰:Access Token: 보호된 리소스 접근용 인증 수단Refresh Token: 액세스 토큰 만료 시 새 토큰 발급용☑️ 네이버 로그인 흐름 분석 (위 흐름도 기반)전체 절차 요약단계 어플리케이션 동작 네이버 서버 동작1단..