장고(Django)에 대한 요약
1. 정의 및 용도
- 정의: Django는 파이썬으로 작성된 웹 프레임워크이다.
- 용도: 웹사이트 개발을 위해 일반적으로 필요한 기능들을 제공한다. 프레임워크는 반복적으로 사용되는 특정 기술을 모아 놓은 도구 상자와 같은 기능을 한다.
2. 장고의 핵심 기능
- 데이터 베이스 관리: 데이터베이스 설계, 조작, 관리를 용이하게 한다.
- 강력한 관리자 기능: 개발자가 아니어도 웹사이트의 데이터를 쉽게 관리할 수 있게 하는 사용자 친화적인 인터페이스를 제공한다.
- 보안: XSS, CSRF 등 웹 애플리케이션에서 흔히 발생할 수 있는 보안 취약점에 대한 기본적인 방어 기능을 내장하고 있다.
웹 페이지 요청 및 응답 과정 요약
1. 웹 페이지 요청 및 응답의 기본
- 사용자가 브라우저를 통해 웹 페이지(예: python.org)에 대한 요청을 보낸다.
- 인터넷을 통해 해당 요청은 python.org를 호스팅하는 서버로 전송된다.
- 서버는 요청을 처리하고, 요청한 페이지의 내용을 담은 응답을 사용자에게 되돌려 보낸다.
- 브라우저는 서버로부터 받은 응답을 해석하여 사용자에게 웹 페이지를 표시한다.
2. 요청 처리 과정
- 기본 페이지 요청: URL에 추가 경로가 없는 경우(예: python.org), 서버는 기본 홈페이지를 반환한다.
- 특정 페이지 요청: URL에 특정 경로가 포함된 경우(예: python.org/downloads), 서버는 해당 경로에 맞는 특정 페이지를 반환한다.
3. Django를 사용한 요청 처리
- URL 수신: Django는 URL을 통해 사용자의 요청을 수신한다.
- 요청 전달: 수신된 요청은 처리할 수 있는 함수(view)로 전달된다.
- 처리 및 응답 생성: View는 요청을 처리하고, 적절한 응답을 생성한다.
- 응답 전송: 생성된 응답은 요청자의 브라우저로 전송되어, 브라우저는 이를 해석하여 사용자에게 결과를 보여준다.
새 프로젝트 생성 및 가상 환경 설정, 터미널 사용법에 대한 요약
1. 새 프로젝트 생성 및 가상 환경 설정
- 가상 환경 설치:
pip install virtualenv 명령어를 통해 virtualenv를 설치한다. 이 과정은 시스템에 virtualenv가 없을 경우 한 번만 수행하면 된다.
- 가상 환경 생성:
virtualenv venv 명령어를 사용하여 'venv'라는 이름의 가상 환경 폴더를 생성한다. 여기서 'venv'는 가상 환경의 폴더 이름이며, 원하는 이름으로 변경 가능하다.
2. 터미널 사용법
pwd (Print Working Directory): 현재 작업 중인 디렉터리의 절대 경로를 출력한다.
cd [디렉터리명] (Change Directory): 현재 위치에서 지정된 디렉터리로 이동한다. 예를 들어, cd Documents는 Documents 디렉터리로 이동한다.
cd ~: 사용자의 홈 디렉터리로 이동한다.
ls -al: 현재 위치의 모든 디렉터리 및 파일을 상세 정보와 함께 출력한다. 여기서 -a 옵션은 숨겨진 파일을 포함하여 모두 보여주고, -l 옵션은 파일의 상세 정보를 리스트 형태로 보여준다.
mkdir [디렉터리명] (Make Directory): 새 디렉터리를 생성한다. 예를 들어, mkdir NewProject는 현재 위치에 'NewProject'라는 이름의 디렉터리를 생성한다.
django의 디자인 패턴
소프트웨어 디자인 패턴(software design pattern)은 소프트 웨어를 개발할 때 공통적으로 발생하는 문제들을 해결하기 위한, 재사용 가능한 해결책이다. 실제 코드를 말하는 것은 아니며 코드를 작성하기 위한 일종의 서식이다.
MTV(Model-Template-View) 패턴은 Django 웹 프레임워크에서 사용되는 디자인 패턴으로, 코드의 역할에 따라 분리하여 프로젝트의 구조를 관리한다. 이 패턴은 Django 특유의 접근 방식으로, 일반적인 MVC(Model-View-Controller) 패턴과 유사하나, Django에서는 View의 역할이 Controller와 비슷하며, Template이 View의 역할을 한다는 점에서 차이가 있다.
1. Model
- 역할: 데이터베이스와의 인터페이스 역할을 하며, 데이터의 구조(스키마)를 정의한다.
- 특징: 각 모델은 데이터베이스의 테이블에 해당하며, 필드와 동작을 포함한다.
- 파일명:
models.py
- 예시: 사용자 모델을 정의하여 사용자의 이름, 이메일 등의 정보를 데이터베이스에 저장할 수 있다.
2. Template
- 역할: 사용자가 웹 브라우저를 통해 볼 수 있는 웹 페이지의 구조와 레이아웃을 정의한다.
- 특징: HTML을 기반으로 하며, Django 템플릿 태그와 필터를 사용하여 동적 데이터를 표현한다.
- 위치:
templates 디렉터리
- 예시: 사용자 목록 페이지에서, 데이터베이스에서 가져온 사용자 정보를 표현하기 위해 반복문과 조건문을 사용한 템플릿을 작성할 수 있다.
3. View
- 역할: 웹 애플리케이션의 비즈니스 로직을 처리하며, 사용자의 요청에 따라 데이터를 모델로부터 가져오거나 저장하고, 그 결과를 템플릿을 통해 사용자에게 전달한다.
- 특징: 파이썬의 함수나 클래스를 사용하여 정의되며, 요청을 받아 처리한 후 응답을 반환한다.
- 파일명:
views.py
- 예시: 사용자가 웹 사이트의 특정 페이지를 요청하면, 해당 요청을 처리하기 위해 관련 데이터를 데이터베이스에서 조회하고, 그 결과를 템플릿으로 전달하여 사용자에게 최종 페이지를 보여주는 로직을 구현할 수 있다.
MTV 패턴을 사용함으로써 Django 개발자는 코드를 체계적으로 조직하고, 유지보수를 용이하게 할 수 있다. 예를 들어, Streamlit과 같은 프레임워크에서 MTV 패턴을 적용하지 않아 코드가 한 파일에 중첩되어 유지보수와 협업이 어려웠던 경우, MTV 또는 MVC 패턴처럼 코드를 명확히 분할하여 작성함으로써 이러한 문제를 해결할 수 있다.