목록분류 전체보기 (83)
Nonamed Develog
문제 상황Django REST Framework로 로그아웃 기능을 구현하던 중, 사용자가 POST 요청으로 refresh_token을 보냈을 때 **{"detail": "This token is already blacklisted."}**라는 에러가 발생했다. 이는 이미 블랙리스트에 등록된 토큰을 처리하려 할 때 발생한 문제였다.문제 원인SignoutView 클래스에서 RefreshToken 객체의 check_blacklist() 메서드를 호출할 때, 이미 블랙리스트에 등록된 토큰이 있을 경우 TokenError가 발생하면서 해당 에러 메시지가 반환되었다. 이 문제는 사용자가 이미 로그아웃한 상태에서 발생할 수 있다.초기 코드class SignoutView(APIView): permission_cl..
문제 상황Django REST Framework를 이용해 사용자 회원가입, 로그인, 로그아웃, 프로필 관리 등을 구현하는 과정에서, 검증 로직이 각 뷰에 산재해 있어 중복된 코드가 많았고 유지보수가 어렵다는 문제를 겪었다. 또한, 비밀번호 확인과 같은 검증 로직이 일부 누락되어 있어 보완할 필요가 있었다. 특히, 회원가입 시 비밀번호 확인과 이메일 중복 검사가 간단한 수준에서 처리되었고, 수정 시 이를 반복적으로 작성해야 했다.문제 원인유효성 검증이 분산되어 관리: 회원가입, 로그인, 프로필 수정 등에서 유효성 검증 로직이 뷰에 직접 구현되어 있어 중복된 코드가 많았고, 검증 기준이 다를 수 있는 문제점이 발생했다.비밀번호 및 이메일 검증 누락: 회원가입 시 비밀번호 일치 여부를 확인하는 부분이 없었고,..
1. REST의 정의REST(Representational State Transfer)는 2000년 로이 필딩(Roy Fielding)의 논문에서 소개된 웹 아키텍처 스타일이다. REST는 웹의 기존 프로토콜인 HTTP를 기반으로 하여 시스템 간의 상호작용을 단순하고 확장 가능하게 만드는 것을 목표로 한다. REST는 자원을 기반으로 클라이언트와 서버 간에 상태 정보를 교환하는 방식으로, 이를 통해 웹 애플리케이션 간의 통신을 효율적으로 관리할 수 있다.2. REST의 주요 원칙REST의 아키텍처는 다음과 같은 6가지 주요 원칙에 기반한다:클라이언트-서버 구조 (Client-Server Architecture):클라이언트와 서버는 서로 독립적으로 동작해야 한다. 클라이언트는 사용자 인터페이스를 담당하고,..
14. Django에서 사용자가 로그인할 수 있는 간단한 로그인 뷰를 작성하세요.사용자가 로그인 폼을 제출했을 때, 해당 사용자를 인증하고, 성공적으로 로그인할 경우 'home' 페이지로 리디렉션합니다.로그인 실패 시 다시 로그인 페이지로 리디렉션하며, 실패 메시지를 출력하세요.from django.shortcuts import render, redirectfrom django.contrib.auth import authenticate, logindef login_view(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] ..
APIViewAPIView는 Django REST Framework(DRF)에서 RESTful API를 구현할 때 사용되는 Class-based View의 기본 클래스이다. 각 HTTP 메서드(GET, PUT, POST, DELETE 등)에 대한 로직을 직접 오버라이딩하여 쉽게 구현할 수 있다. get_object와 같은 헬퍼 메서드를 통해 객체를 가져오고, 이를 직렬화(Serializtion) 한 후, Response로 반환하는 방식이 기본적인 패턴이다. 아래 코드는 강의에서 작성한 ArticleDetailAPIView이다.class ArticleDetailAPIView(APIView): def get_object(self, pk): return get_object_or_404(Art..
어떤 문제가 있었나?이번 장고 심화 강의를 들으면서 RESTful API와 Django REST Framework(DRF)를 처음 접하게 되었다. 특히 REST의 개념과 RESTful API의 원칙을 이해하는 데 조금은 어려움이 있었다. 또한 Django에서 DRF를 설정하고 사용해 JSON 형식의 응답을 반환하는 방법이 익숙하지 않아 처음에는 설정 과정이 매우 어려웠다. 특히 serializers.py 파일의 역할과 API 뷰를 작성하는 과정을 이해하기 쉽지 않았다.무엇을 시도했나?REST: REST에 대한 개념을 여러 번 읽어보고, 웹 페이지 상태 전이와 상태 표현에 대한 개념을 튜터님이 말씀하신대로 이해해보려 노력했다.DRF 설정: 강의를 통해 Django project에 DRF를 설치하고 설정 파..
어떤 문제가 있었나?HTML에서 드롭다운 메뉴의 맨 위 항목이 선택되지 않는 문제가 발생했다. 사용자에게 선택할 수 있는 정렬 옵션을 제공하는 태그에서 첫 번째 이 기본적으로 선택되지 않거나, 선택하려고 해도 반응하지 않는 상황이었다.무엇을 시도했나? 태그에 value 속성을 추가하지 않았던 부분이 문제일 수 있다고 생각하여, 모든 태그에 value 속성을 명시적으로 추가해 보았다.첫 번째 옵션이 기본적으로 선택되도록 selected 속성을 추가해 보았다.자바스크립트 코드에서 옵션이 동적으로 설정되는 부분이 문제인지 확인하기 위해, 자바스크립트 코드에서 value를 명시적으로 설정해 보았다.브라우저 캐시 문제일 가능성을 염두에 두고 브라우저 캐시를 지우고 강력 새로 고침을 시도했다.어떻게 해결됐는가..
추후 정리def profile(request, username): member = get_object_or_404(get_user_model(), username=username) profile_image = Profile.objects.filter(user=member).last() if request.method == "POST": form = ProfileImageForm(request.POST, request.FILES, instance=profile_image) if form.is_valid(): profile_image = form.save(commit=False) profile_image.user = member..