CS 면접 준비14 TIL230801_2 Serializer를 통해서 역참조 하는 방법에 대해서 설명하시오 Serializer를 사용하여 역참조를 하는 방법에 대해 설명해보겠습니다. Django에서 역참조는 외래 키(ForeignKey)를 설정한 모델과 연결된 다른 모델에서 데이터를 참조하는 방법을 의미합니다. 이를테면, Book 모델이 Author 모델을 외래키로 가질 때, Author 모델에서 자신이 저술한 모든 책들을 참조하는 경우를 생각해볼 수 있습니다. 이때, 이런 참조를 '역참조'라 합니다. 이러한 역참조를 Serializer에서 구현하려면, 먼저 역참조하려는 필드를 Serializer에서 정의해야 합니다. 여기서는 Author 모델에서 Book 모델을 역참조하는 것을 구현하겠습니다. 이를 위해 serializers.StringRelatedField와 같은 필드를 사용할 수 있습니다. 이 필드는 관.. CS 면접 준비 2023. 8. 2. TIL230801 Serializer를 통해서 특정 모델에 존재하지 않지만, 관계 있는 테이블의 필드 레코드를 반환하는 방법에 대해서 설명하시오 ModelSerializer에서 특정 모델에 존재하지 않는 필드를 반환하려면, 해당 필드를 Serializer에서 직접 정의해야 합니다. 이를 위해 SerializerMethodField라는 특별한 필드 타입을 사용할 수 있습니다. 예를 들어, Book 모델이 Author 모델을 외래키로 가지고 있고, BookSerializer에서 Author의 name 필드를 반환하려는 경우 다음과 같이 구현할 수 있습니다. pythonCopy code from rest_framework import serializers from .models import Book, Author class BookSerializer(serializers.ModelSerializer): author_name = serializers.S.. CS 면접 준비 2023. 8. 2. TIL230731_2 Django User 모델과 DRF Custom User 모델의 차이는 무엇입니까? Django User 모델은 Django에서 제공하는 기본 사용자 모델입니다. 이 모델에는 사용자 이름, 이메일, 비밀번호와 같은 필드가 포함되어 있습니다. DRF Custom User 모델은 Django User 모델을 기반으로 사용자 정의한 사용자 모델입니다. 이 모델에는 Django User 모델에 포함되지 않은 필드를 추가할 수 있습니다. 예를 들어, DRF Custom User 모델에는 사용자의 이름, 생년월일, 성별과 같은 필드를 추가할 수 있습니다. Django User 모델과 DRF Custom User 모델의 차이는 다음과 같습니다. Django User 모델은 기본 사용자 모델입니다. DRF Custom User 모델은 사용자 정의한 사용자 모델입니다. Django User 모델에는 사.. CS 면접 준비 2023. 8. 1. TIL230731 JSON 형식으로 데이터를 받고, Serializer를 통해서 JSON형식으로 데이터를 반환하는 이유는 무엇인가요? Django REST Framework(DRF)는 RESTful API를 구축하기 위한 프레임워크입니다. RESTful API는 HTTP 표준을 사용하여 데이터를 교환하는 API입니다. JSON은 HTTP 표준에서 정의된 데이터 교환 형식입니다. 따라서 DRF는 JSON 형식으로 데이터를 받고, Serializer를 통해서 JSON형식으로 데이터를 반환합니다. JSON 형식으로 데이터를 받고, Serializer를 통해서 JSON형식으로 데이터를 반환하는 이유는 다음과 같습니다. JSON은 HTTP 표준에서 정의된 데이터 교환 형식입니다. 따라서 RESTful API를 구축하는 데 적합합니다. JSON은 인간이 읽고 이해하기 쉬운 형식입니다. 따라서 개발자가 API를 쉽게 이해하고 사용할 수 있습니다. .. CS 면접 준비 2023. 8. 1. TIL230727_2 회원탈퇴, 게시글 삭제와 같은 기능을 구현할 때 실제 레코드를 삭제합니까? 그렇지 않다면 그 이유는 무엇입니까? 회원 탈퇴나 게시글 삭제 같은 기능을 구현할 때 실제 레코드를 삭제할지 아니면 삭제하지 않을지는 개발 상황이나 비즈니스 요구 사항에 따라 달라집니다. 데이터를 완전히 삭제하는 방법을 "하드 삭제"라고 부릅니다. 이 방법은 해당 레코드를 데이터베이스에서 완전히 제거합니다. 이 방법은 데이터를 완전히 제거하므로 데이터베이스의 용량을 관리하는 데 유리할 수 있습니다. 하지만 이렇게 데이터를 완전히 삭제하면 나중에 그 데이터가 필요해질 때 복구하는 것이 불가능하거나 매우 어렵습니다. 따라서 많은 경우에 "소프트 삭제" 방법을 사용합니다. 이 방법은 레코드를 실제로는 삭제하지 않고, '삭제됨'이라는 상태로 표시하는 것입니다. 일반적으로 이를 위해 'is_deleted'나 'deleted_at' 같은 필드를 레코드.. CS 면접 준비 2023. 7. 27. TIL230727 Response 결과와 함께 status code를 반환하는 이유는 무엇입니까? HTTP 상태 코드를 반환하는 이유는 클라이언트에게 요청의 처리 상태를 명확하게 전달하기 위해서입니다. 이 코드는 클라이언트가 요청이 성공적으로 처리되었는지, 아니면 오류가 발생했는지를 알 수 있도록 합니다. 상태 코드를 반환하면 클라이언트는 이 정보를 바탕으로 적절한 조치를 취할 수 있습니다. 예를 들어, 200 상태 코드는 요청이 성공적으로 처리되었음을 나타내므로 클라이언트는 일반적으로 요청에 따른 응답을 처리하게 됩니다. 반면에 400 상태 코드는 클라이언트의 요청에 문제가 있음을, 500 상태 코드는 서버 내부에서 오류가 발생했음을 나타내므로 클라이언트는 이를 감지하고 적절히 대응할 수 있습니다. 또한, 상태 코드는 개발 및 디버깅 과정에서도 중요한 역할을 합니다. 개발자는 HTTP 상태 코드를 .. CS 면접 준비 2023. 7. 27. TIL230726_2 Django ORM에서 정참조와 역참조에 대해서 설명하시오 Django ORM에서 정참조와 역참조는 모델 간의 관계를 나타내는 용어입니다. 정참조는 ForeignKey나 OneToOneField와 같은 필드를 통해 다른 모델을 참조하는 것을 말합니다. 예를 들어, 사용자와 그의 포스트가 있을 때, 각 포스트는 특정 사용자에게 속하므로, 포스트 모델에서는 ForeignKey를 통해 사용자 모델을 참조합니다. 이 때 이 관계를 포스트 모델의 관점에서 보면, 이것이 정참조입니다. 즉, "포스트는 사용자를 참조한다"라는 의미로 이해할 수 있습니다. 반면에, 역참조는 반대 방향의 관계를 나타냅니다. 즉, ForeignKey나 OneToOneField를 통해 참조당하는 모델의 관점에서 본 관계입니다. 위의 예에서 사용자 모델의 관점에서 보면, "사용자는 여러 포스트를 가진.. CS 면접 준비 2023. 7. 26. TIL230726 Django ORM에서 queryset과 object의 차이점에 대해서 설명하시오 Django ORM에서 QuerySet과 Object는 각각 다른 역할과 특징을 가지고 있습니다. QuerySet은 Django 모델의 데이터베이스 쿼리 인터페이스를 나타냅니다. QuerySet은 데이터베이스로부터 데이터를 읽고 필터를 적용하거나 정렬하는 등의 작업을 할 수 있습니다. 또한, QuerySet은 'lazy'합니다. 이는 실제로 데이터베이스에 쿼리를 실행하는 것이 필요한 시점까지 쿼리의 실행을 미룬다는 뜻입니다. 예를 들어, Post.objects.all()은 모든 Post 객체를 가져오는 QuerySet을 반환하지만, 이 때 데이터베이스에 쿼리가 실행되는 것이 아니라, 이 QuerySet을 반복하거나 실제로 데이터를 사용할 때 쿼리가 실행됩니다. 이러한 특성 덕분에 QuerySet은 체이닝.. CS 면접 준비 2023. 7. 26. TIL230725_2 Template Engine을 사용할 때, 발생하는 CSRF Error가 무엇이고 어떻게 해결합니까? CSRF(Cross Site Request Forgery)는 웹 사이트의 보안을 위협하는 공격 방법 중 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행동을 해서 서버에 보내게 되는 공격입니다. Django는 이런 CSRF 공격을 방어하기 위한 보안 기능을 제공합니다. 이를 위해 Django는 POST 요청을 처리할 때 CSRF 토큰이 요청에 포함되어 있는지 확인합니다. 만약 CSRF 토큰이 없거나 유효하지 않다면, Django는 CSRF 에러를 발생시킵니다. 따라서 Django에서 CSRF 에러가 발생했다면, 요청에 CSRF 토큰이 적절하게 포함되어 있지 않았을 가능성이 높습니다. 이 문제를 해결하기 위해서는 Django의 템플릿에 {% csrf_token %} 태그를 추가하여 폼 데이터와.. CS 면접 준비 2023. 7. 26. TIL230725 테스트코드에서 setup 함수와 setupclass의 차이는 무엇입니까? setup 메소드와 setupClass 메소드는 테스트 케이스를 준비하는 데 사용되는 메소드입니다. 이 두 메소드의 주된 차이점은 호출되는 시점과 빈도에 있습니다. setup 메소드는 각각의 테스트 메소드가 실행되기 전에 호출됩니다. 즉, 테스트 케이스 내에 5개의 테스트 메소드가 있다면, setup 메소드는 총 5번 호출됩니다. 이 메소드는 각 테스트가 서로에게 영향을 주지 않도록 테스트 환경을 격리하는데 사용됩니다. 예를 들어, 각 테스트 메소드에서 독립적인 데이터베이스 상태를 보장하거나, 테스트에 필요한 객체를 매번 새로 생성하는 등의 작업을 setup에서 수행할 수 있습니다. setupClass 메소드는 테스트 케이스 클래스가 처음 생성될 때 딱 한 번만 호출됩니다. 이 메소드는 테스트 케이스 전.. CS 면접 준비 2023. 7. 26. TIL230724_2 테스트코드를 작성하는 이유는 무엇이며 어떤 장점이 있습니까? 소프트웨어의 품질을 보장하고, 예상치 못한 문제나 버그를 미리 찾아낼 수 있기 때문입니다. 테스트 코드는 작성한 코드가 정확하게 동작하는지, 예상한 대로 결과를 내는지를 검증하는 도구로써, 코드의 안정성과 신뢰성을 확보하는 데 큰 도움을 줍니다. 테스트 코드를 작성하는 것이 가지는 장점 버그 발견 테스트 코드는 새로운 기능을 추가하거나 기존 코드를 수정할 때 발생할 수 있는 예상치 못한 문제나 버그를 빠르게 찾아내는 데 도움을 줍니다. 이는 시스템의 안정성을 높이며, 사용자에게 더 좋은 사용 경험을 제공하는데 기여합니다. 리팩토링 용이 테스트 코드가 있으면 코드를 수정하거나 리팩토링할 때도 안심하고 진행할 수 있습니다. 변경한 내용이 기존 기능에 부정적인 영향을 미치는지 확인할 수 있기 때문에, 테스트 .. CS 면접 준비 2023. 7. 24. TIL230724 FBV와 CBV는 각각 무엇이며, 어떤 차이가 있습니까? Django에서 뷰를 생성하는 방식에 따라 Function-Based View(FBV)와 Class-Based View(CBV)라는 두 가지 방식이 있습니다. FBV (Function-Based View) 함수 기반으로 뷰를 정의하는 방식입니다. 각 요청에 대한 로직을 단일 함수로 처리하며, 각 함수는 HTTP 요청을 인자로 받아서 HTTP 응답을 반환합니다. 코드가 간결하고 직관적이며, 제어 흐름을 쉽게 이해할 수 있기 때문에 복잡하지 않은 로직을 처리하는 뷰를 만드는 데 적합합니다. from django.http import HttpResponse from django.shortcuts import render def hello_world(request): return HttpResponse("Hel.. CS 면접 준비 2023. 7. 24. 이전 1 2 다음