본문 바로가기
취대넓얕

[기술면접] 17일차 문답 | Django 기본기

by 째깍단 2023. 8. 10.

💡 Django Admin은 무엇이고 어떤 기능을 제공합니까?

 Django admin은 Django에서 기본으로 제공하는 관리 기능으로 데이터베이스 모델에 대해 데이터를 CRUD 할 수 있다.
필요한 경우 admin page에 대한 커스터마이징이 가능하다.

 

 django-admin은 DB모델 기반 관리자 인터페이스 자동 생성, 다국어 지원, 커스터마이징의 특징이 있다. 커스터마이징은 필드 숨기기, 커스텀 액션 추가, 커스텀 뷰가 가능하다.

 admin page의 기능은 폼 기반 CRUD 작업, 특정 조건에 따라 데이터 검색과 필터링을 수행, 모델 간의 관계를 관리, 관리자 인터페이스의 접근을 제한하거나 특정 유저가 특정 기능에 대한 접근을 하는 보안 기능을 제공

 

 

💡 Django Template Engine은 무엇이고 어떤 기능을 제공합니까?

Django에서 제공하는 서버 사이드 템플릿 엔진으로 간단한 Template 작성 툴

DB, API에서 가져온 데이터를 HTML에서 코드를 작성하고 웹을 구현할 수 있도록 돕는다.

Django Template Engine이 있어 Django만으로 프론트와 백엔드를 분리하지않고 웹을 전부 구현할 수 있다.

 

 

*** 템플린 엔진이란 : 템플릿 양식과 특정 데이터 모델에 따른 입력자료를 합성, 결과 문서를 출력하는 소프트웨어 컴포넌트를 말함

 

*** 템플릿 엔진의 종류 : 레이아웃 / 텍스트 / 서버사이드 / 클라이언트 템플릿 엔진 등

 

*** 서버 사이드(server-side):  네트워크의 한 방식인 클라이언트-서버 구조의 서버 쪽에서 행해지는 처리

*** 서버사이드 템플릿 엔진 :
서버에서 DB, API에서 가져온 데이터를 HTML에 넣은 코드를 따라 그려 넣고 클라이언트에 전달해주는 역할
html에서 고정적으로 사용되는 부분은 템플릿으로 만들고 동적으로 생성되는 부분만 템플릿의 특정 장소에 끼워넣는 방식으로 동작

    - 작동 순서 :

    1) 서버가 클라이언트 요청을 받음

    2) 필요한 데이터를 가져옴

    3) 미리 정의된 template에 해당 데이터를 적절하게 입력함

    4) 서버에서 데이터가 반영된 template = HTML 을 그림

    5) HTML을 클라이언트에게 전달함

 

[참고] : https://usefultoknow.tistory.com/entry/템플릿-엔진Template-Engine-이란

 

 

 

 

💡 Django를 통해 CRUD를 구현하는 방법에 대해서 HTTP Method와 함께 설명하시오

  • get: 정보 조회 Read
  • post: 정보 생성 Create   (DB에 정보 업로드!)
  • put: 정보 수정 Update
  • delete: 정보 삭제 Delete


함수형으로 구현하는 방법과 클래스 뷰형으로 구현하는 방법이 있다.

 

함수형으로 구현할 경우 일일이 request.GET 처럼 해당 메소드를 정의해주어야하는 번거로움이 있지만 틀이 없어 비교적 자유롭게 작성할 수 있다. 클래스 뷰형으로 구현하는 경우 클래스명을 정의하고 하위 함수로 get, post, put, delete를 정의하여 해당 기능을 구현한다.

 

함수형 뷰와 클래스형 뷰는 두가지 모두 CRUD를 작성하므로 로직에는 차이가 없지만 확장성 / 코드 작성의 자유도에서 차이가 나므로 적절한 것을 골라서 적용하도록 한다.

 

 

 

💡 Django에서 테이블을 설계하고 데이터베이스에 반영하는 방법에 대해서 설명하시오

앱의 models.py에서 정의한 모델과 필드가 데이터베이스 테이블을 설계한 것이다.

모델 클래스를 정의하고 makemigrations, migrate 명령어를 통해 모델의 변경사항을 DB에 알리고 반영한다.

 

 

 

💡 회원가입을 할 때 비밀번호를 암호화하여 저장하는 이유는 무엇입니까?

암호화를 하지 않으면 비밀번호가 데이터베이스에 그대로 저장되기 때문에 보안과 개인정보 보호를 위해 암호화는 필수이며,
암호화를 통해 해커에 의해 정보가 탈취되더라도 정확한 정보를 확인할 없도록 한.