슈코딩

[기술면접] Django 50문 50답 31~45 본문

코딩공부/기술면접

[기술면접] Django 50문 50답 31~45

Roshu 2022. 10. 26. 14:17

 

⭐31. DRF Serializer는 무엇이며, 어떤 기능을 수행합니까?

  • Serializer는 queryset과 모델 인스턴스와 같이 복잡한 데이터를 JSON, XML 또는 
    다른 콘텐츠 유형으로 변환할 수 있고, Serializer는 받은 데이터의 유효성 검사를 
    진행한 뒤 복잡한 타입으로의 형 변환을 할 수 있도록 Serialization을 제공합니다.

⭐32. JSON 형식으로 데이터를 받고, Serializer를 통해서 JSON형식으로 데이터를 반환하는 이유는 무엇인가요?

  • JSON은 특정 언어의 종속 되지 않습니다.
  • xml 보다 가볍기 때문에 최소한의 용량으로 데이터 전송이 가능합니다.
  • xml 보다 구조정의의 용이성과 가독성이 좋습니다.

⭐33. Serializer를 통해서 특정 모델에 존재하지 않지만, 관계 있는 테이블의 필드 레코드를 반환하는 방법에 대해서 설명하시오

  • Serializer MethodField를 사용하면 됩니다.
    serializer 에 test = serializer.SerializerMethodField()를 추가합니다.
    get_test 라는 함수를 선언합니다 (객체를 인자로 받습니다)
    fields 에 test 를 추가 해줍니다.

⭐34. Serializer를 통해서 역참조 하는 방법에 대해서 설명하시오

  • 만약 post 라는 모델을 역참조 하려면 post_set을 통해서 역참조 를 할 수 있습니다. 
    혹 related_name 을 모델에 선언해줬다면 related_name을 통해 참조 할 수 있습니다.

⭐35. DRF Q기능을 통해서 쿼리하는 것은 어떤 장점이 있습니까?

  • 데이터를 조회 할때 and , or , not 연산을 사용 할 수 있습니다.
    복잡한 데이터를 조회할 때 유용하게 쓰일 수 있습니다.

⭐36. Serializer에서 어떻게 객체를 validate하게 됩니까?

  • validate 함수를 통해서 할 수 있습니다. 
    함수의 인자값으로 해당 값이 전달되고 유효성 검사를 할 수 있습니다. 
  • validator_필드명 을 통해서 정의 할 수 있습니다. 
    유효성 검사가 실패하면 raise ValidationError 를 발생시킵니다.

⭐37. Serializer에서 Custom Validation을 하는 이유는 무엇입니까?

  • django 에서 기본적으로 validation 을 제공하지만 자신만의 validator 메소드를 만들고 싶거나, 
    데이터에 추가에 좀 더 많은 기능을 사용하고 싶을 때 사용합니다.
    특수문자 처리 등이 대표적인 예입니다.

⭐38. Serializer에서 create, update 함수는 어떤 기능을 수행합니까?

  • serializer.save를 호출시 instance 가 있다면 update를 호출하고, 없다면 create를 호출합니다.
    create ⇒ save() 메소드를 호출함으로 DB인스턴스를 생성
    update ⇒ save() 메소드를 호출함으로 DB 인스터스를 수정

⭐39. Serailizer Custom validate함수를 통해 오류 케이스를 어떻게 처리합니까?

  • validate함수 내에서 개발자가 설정한 검증 절차를 거치고 통과하지 못한다면 
  • raise 를 통해서 에러를 발생 시킵니다

⭐40. DRF permission_classes를 사용하는 이유는 무엇입니까?

  • permisson 기능은 사용자의 권한을 나누는 가장 간단하고 효과적인 수단입니다.
    유저 별로 권한이 나누어져 있다면 유저 권한 별로 데이터를 접근 할 수 있고,
    django 에서 제공하는 admin 같은 기능도 보다 쉽게 사용 할 수 있습니다.
    유저 권한 별로 데이터 입출력도 편하게 핸들링 할 수 있습니다.

⭐41. Django는 어떤 종류의 데이터베이스를 사용합니까? Flask와의 차이는 무엇입니까?

  • Django 에서는 기본적으로 Sqlite 가 내장형으로 지원을 하며 Django 의 ORM 을 지원하며, 
    Django 에서도 기본적으로 Sqlite 를 사용하게 되어 있습니다. Flask 는 기본적으로 지원하는 DB가 없으며, 
    Flask에서 sqlite를 사용하려면 import sqlite3 , conn = sqlite3.connect('database.db') 를 통해서 연동 할 수 있습니다.

⭐42. Django에서 제공하는 sqlite는 어떤 장단점이 있습니까?

  • 장점
    대부분의 연산에서 mysql보다 빠릅니다.
    서비스를 설치할 필요가 없습니다.
    사용하지 않을 때에는 컴퓨터 메모리와 CPU를 소비하지 않습니다
    단순하고 간편합니다.
  • 단점
    동시성에 제한이 있습니다. 동시에 여러 프로세스가 SQLite 데이터베이스에 액세스하고 쿼리가 가능하지만 
    주어진 시간에 하나의 프로세스만이 데이터베이스를 변경할 수 있습니다.
    구조가 단순한 만큼 기능을 확장하기 어렵습니다.

⭐43. AWS를 통해 배포할 경우, sqlite를 사용하지 않는 이유는 무엇입니까?

  • DB"MS"가 아니라 원격 사용이 불가능합니다.
    AWS 배포를 한다는것은 서비스를 하는 것인데, 확장성이 부족합니다
    다른 데이터 베이스보다 보안이 약합니다.

⭐44. Django settings에서 DB 스택을 변경하는 방법은 무엇입니까?

  • settings.py 에 DATABASES부분의 engine값을 변경하면 됩니다.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/Users/honux/my.cnf',
        },
    }
}

⭐45. Django 프로젝트를 배포할 때, 노출되어서는 안되는 값은 어떤 것이 있습니까?

  • database 와 관련된 정보 (username, password)
  • JWT토큰 설정
  • AWS S3와 관련된 키
Comments