목록2024/08 (20)
Nonamed Develog
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..
text는 나중에 작성https://docs.github.com/ko/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks
어떤 문제가 있었나?예전 프로젝트를 진행할 때, Bootstrap을 처음 사용하는 과정에서 그리드 시스템을 이해하기 어려웠다. 특히 화면 크기에 따라 레이아웃이 어떻게 변화하는지 명확하지 않았다.무엇을 시도했나?기본 HTML 설정Bootstrap을 프로젝트에 포함시키기 위해 CDN 링크를 사용하여 기본 HTML 템플릿을 작성하였다.그리드 시스템- 2개와 3개의 열로 구성된 레이아웃을 만들어 봤고, 화면 크기에 따라 레이아웃이 어떻게 변하는지 확인하기 위해 브라우저 개발자 도구를 사용했다. Column 1 Column 2 Column 3 구성 요소 사용다양한 스타일의 버튼, 네비게이션 바, 카드, 폼 등을 만들어 Bootstrap의 기본 구성 요소를 익혔다..
어떤 문제가 있었나?프로젝트에서 사용자 정보 업데이트 및 비밀번호 변경 기능을 구현하다가 막히는 부분이 있었다. Django의 기본 제공 Form인 UserChangeForm과 PasswordChangeForm을 사용하면 되지만, 기본 동작을 커스텀할 필요가 있었었다. 회원정보수정 부분은 너무 많은 권한이 주어지기 때문에 수정할 부분을 지정해줘야 했고, 특히 비밀번호에 사용자에게 안내 텍스트를 추가하고 링크도 내가 원하는 경로로 설정해야 했다.무엇을 시도했나?CustomUserChangeForm 오버라이딩- Django 기본 UserChangeForm을 상속받아 사용자 정보 업데이트 기능을 커스텀했다. 비밀번호 필드의 도움말을 수정하여 사용자가 비밀번호 변경 페이지로 쉽게 이동할 수 이도록 링크를 추가하..
어떤 문제가 있었나?지난 프로젝트에서 팀 프로젝트에서 Git을 사용해 협업해봤지만 git push, git pull 같은 간단한 명령어만 사용했었다. 여러 명이 동시에 작업하면 코드 충돌이 발생할 수 있어 팀 프로젝트에 어려움을 느꼈다. 브랜치 사용이나 충돌 해결에 대한 지식이 부족해 프로젝트 관리가 비효율적이었다.무엇을 시도했나?이번과 지난 Git & Github 특강을 통해 팀 프로젝트에 필요한 다양한 Git 명령어와 Github 활용법을 배우고 실제로 시도해봤다.브랜치 생성git checkout {branch name} # 브랜치 생성# 브랜치 생성 및 이동git checkout -b {branch name} git switch -c {branch name} # MZ 명령어# 브랜치 이동git..