TIL 240418

hyeo71·2024년 4월 18일
0

2024 내배캠 AI 트랙

목록 보기
77/108

Django

  1. 장고 외 타 프레임워크가 무엇이 있고 차이점은 무엇이 있나요?

    • 같은 파이썬을 사용하는 프레임워크로는 flask, fastapi가 있다.

    • flask와 django는 동기적인 프로그래밍 모델을 따르는 WSGI를 사용한 파이썬 웹 애플리케이션과 웹 서버 간의 인터페이스로서 사용하지만 fastapi는 비동기 웹 애플리케이션을 위한 파이썬 웹 서버와 웹 프레임워크 간의 인터페이스인 ASGI를 사용한다. 이는 ASGI를 기반으로 비동기 처리를 지원하여 더 빠르고 효율적인 웹 애플리케이션을 개발할 수 있게 해준다.

    • fastapi는 특히 api 개발에 초점을 맞추어 설계되었고 높은 성능과 직관적인 문법을 제공

    • 그 외에도 java를 사용하는 spring, js를 사용하는 node.js, vue.js, ruby를 사용하는 ruby on rails, kotlin의 android 등 여러 프레임워크가 있다.


  1. 다른 웹 프레임워크와 비교했을 때 Django의 장점과 단점은 무엇이라고 생각하시나요?

  1. Django와 Flask는 같은 파이썬 언어로 되어있지만 차이가 있습니다. 어떤 차이가 있는지 설명해주세요.

    • flask는 프로젝트 마다 1개의 app을 개발하도록 되어 있지만 django는 한 프로젝트 내에 다양한 app이 존재할 수 있다. 이는 재사용 가능한 코드를 작성하기 쉽고 개별 프로젝트 관리가 편하다.

    • flask는 따로 orm이 없어서 sqlalchemy를 사용하지만 django는 orm이 있다.

    • django는 대부분의 기능을 지원하지만 내가 원하는 기능이 따로 있다면 추가하는게 flask보다 껄끄러울 수 있다. flask는 마이크로 프레임워크로 확장과 커스터마이징이 편하기 때문에


  1. 장고의 ORM과 SQL 쿼리 간에 어떤 장단점이 있나요? 어떤 상황에서 각각을 사용하시나요?

    • 장고의 ORM 은 사용자가 보다 편하게 데이터베이스 쿼리문을 사용할 수 있도록 돕습니다. ORM 을 사용하면 SQL 문을 사용하지 않아도 데이터베이스를 수정하거나 객체를 가져오는 작업 등을 수행할 수 있다.

    • 다만 ORM 을 통해 모든 SQL 문을 수행할 수 있는 것은 아니며, 락을 걸거나 이중 쿼리문을 쓰는 등 복잡한 작업을 수행할 때에는 오히려 SQL 문보다 효율이 떨어지기도 합니다. 특히 작업해야 하는 데이터베이스가 복잡할 수록 ORM 남용은 지양하는 것이 좋습니다.

    • orm을 사용하면 쿼리의 최적화가 되지 않아 속도 문제가 발생할 수 있다.

    • orm을 사용하면 sql injection과 같은 해킹 공격에 상대적으로 좋다.


  1. MTV 구조에 대해서 설명해주세요.
    • MTV 패턴은 Model-View-Template 의 약자로 모델은 데이터를, view 는 프로그램이 동작하여 데이터를 처리한 결과를 템플릿에 보이는 로직을, 템플릿은 사용자에게 보이는 ui 를 말한다. 장고에서는 웹을 구현할 때 mvt 패턴에 따라 구현해나갈 것을 권장하고 있는데, 이는 각각의 분야에서 다른 분야를 크게 신경쓰지 않고 개발을 진행할 수 있다는 장점이 있습니다.

  1. django에서 프로젝트를 생성했을 때 어떤 파일들이 생성되며, 각 파일들의 역할이 뭔지 설명해주세요
    • 장고에서 처음 프로젝트를 시작하면 migrate, runserver 같이 프로젝트와 상호작용하는 커맨드라인을 담고 있는 manage.py가 루트 폴더에 생성되며, 해당 프로젝트 이름을 갖는 폴더 아래에 init.py, settings.py, urls.py, asgi.py, wsgi.py 가 생성됩니다. init.py 는 해당 디렉토리를 패키지처럼 다루기 위한 빈 파일이고, settings.py 는 해당 장고 프로젝트의 secret key, middleware, db, 시간 설정 등 프로젝트 대부분의 설정을 저장하는 파일입니다. urls.py 는 root url 역할을 하며, asgi.py 와 wsgi.py 는 서비스 시 각각의 호환 웹 서버가 진입하는 진입점입니다.

  1. 장고에서 app을 나누는 기준에 대해 본인 생각을 말씀해주세요.
    • 앱을 나누는 기준은 주로 각 기능들의 독립성에 기반합니다. 예를 들어 사용자 관리, 게시글 관리, 상품 관리 등 각각의 기능을 별도의 앱으로 분리하여 개발하고 관리합니다. 이렇게 하면 각 기능의 독립성을 보장하고 앱 간의 의존성을 최소화할 수 있습니다.

  1. 장고에서 app 생성시 urls.py는 생성되나요? 생성이 안된다면 왜 안되는지 본인의 생각을 말해주세요.
    • 기본적으로 app을 생성할 때 urls.py 파일은 자동으로 생성되지 않습니다. 이는 django에서는 기본적으로 프로젝트 폴더의 urls.py 파일에서 전체 URL 구조를 관리하고, 필요에 따라 각 app에서 별도의 urls.py를 만들어 포함시킬 수 있기 때문입니다.

  1. 장고에서 미들웨어가 무엇인지 설명해주세요.
    • 미들웨어는 요청과 응답 사이에서 다양한 처리를 수행하는 일련의 함수나 클래스입니다. django의 모든 request는 미들웨어를 거치며, 이를 통해 request를 처리하고 response를 반환합니다.
    • 미들웨어는 보안 기능, 요청 로깅, 사용자 인증, 세션 관리, 등 다양한 기능을 수행합니다.

  1. 장고에서 트랜잭션을 처리하기 위한 방법이 어떤 것이 있는지, 본인 사용 경험 근거하여 설명해주세요.
    • django에서 트랜잭션 처리를 위해 django에 내장돼있는 transaction 모듈을 사용합니다. @transaction.atomic 데코레이터나 with transaction.atomic(): 문을 사용하여 코드 블록을 트랜잭션으로 묶을 수 있습니다. 이는 해당 블록 내의 작업이 도중에 실패할 경우 기존 작업들이 롤백되도록 보장합니다.

0개의 댓글