Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.
Web
1. Static web page(정적 웹 페이지) == flat page
- 서버에 미리 저장된 파일이 사용자에게 그대로 전달되는 웹 페이지
- 서버가 요청 받으면, 추가적인 처리 과정 없이 클라이언트에게 응답을 보냄
- 모든 상황에서 모든 사용자에게 동일한 정보 표시
- HTML, CSS, JavaScript로 작성됨
2. Dynamic web page(동적 웹 페이지)
- 웹 페이지에 대한 요청을 받은 경우 서버는 추가적인 처리 과정 이후 클라이언트에게 응답을 보냄
- 방문자와 상호작용 == 페이지 내용은 그때그때 다름
- 서버 사이드 프로그래밍 언어(Python, Java, C++ 등)가 사용되며, 파일을 처리하고 데이터베이스와의 상호작용이 이루어짐
3. Framework == Application framework
- 프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모음
- 재사용할 수 있는 수많은 코드를 프레임워크로 통합 == 새로운 애플리케이션을 위한 표준 코드를 다시 작성하지 않아도 같이 사용 가능
4. Web framework
- 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주 목적
- 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능 포함
- 동적인 웹 페이지, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 Application framework의 일종
Framework Architecture
1. MVC Design Pattern (Model - View - Controller)
- 소프트웨어 공학에서 사용되는 디자인 패턴 중 하나
- 사용자 인터페이스로부터 프로그램 로직을 분리, 애플리케이션의 시각적 요소나 이면에서 실행되는 부분을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있음
- 즉, 한 요소가 다른 요소들에게 영향을 주지 않도록 설계
2. Django : MTV (Model - Template - View)
- Model : 응용 프로그램의 데이터 구조 정의, 기록 관리(추가, 수정, 삭제)
- Template : 파일의 구조나 레이아웃 정의, 실제 내용을 보여주는 데 사용(presentation)
- View : 웹 요청을 받으면 로직으로 가공하여, 그 결과를 Template에 보냄. HTTP 요청을 수신하고, 응답 반환. Model을 통해 필요한 데이터 접근. Template에게 응답의 서식 설정을 맡김
초기 설정 명령어
1. 가상환경 생성 및 활성화 (Django 설치 전)
- 생성 : python -m venv venv
- 활성화 : source venv\Scripts\activate (Git bash 기준)
- 비활성화 : deactivate
- pip를 통해 현재 가상환경인지 확인 : pip list
2. Djago 시작하기
- 설치 : pip install django==3.2.12
- 프로젝트 생성 : django-admin startproject <프로젝트명> .
ex ) django-admin startproject firstpjt .
주의사항 - Python 이나 Django에서 사용중인 키워드 피하기. 하이픈('-') 사용 불가 - 서버 시작(활성화) : python manage.py runserver
- 메인 페이지 로켓 확인!
프로젝트 구조
- __init__.py : Python에게 이 디렉토리를 하나의 Python 패키지로 다루도록 지시
- asgi.py : Asynchronous Server Gateway Interface. Django 애플리케이션이 비동기식 웹 서버와 연결 및 소통하는 것을 도움
- settings.py : 애플리케이션의 모든 설정을 포함
- urls.py : 사이트의 url과 적절한 views의 연결을 지정
- wsgi.py : Web Server Gateway Interface. Django 애플리케이션이 웹서버와 연결 및 소통하는 것을 도움
- manage.py : Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인 유틸리티
Application 생성
- 일반적으로 Application명은 복수형으로 하는 것을 권장.
ex) python manage.py startapp articles
Application 구조
- admin.py : 관리자용 페이지를 설정하는 곳
- apps.py : 앱의 정보가 작성된 곳.
- models.py : 앱에서 사용하는 Model을 정의하는 곳
- tests.py : 프로젝트의 테스트 코드를 작성하는 곳
- views.py : view 함수들이 정의되는 곳
Project & Application
1. Project
- 프로젝트는 앱의 집합(collection of apps)
- 프로젝트에는 여러 앱이 포함될 수 있음
- 앱은 여러 프로젝트에 있을 수 있음
2. Application
- 앱은 실제 요청을 처리, 페이지를 보여주는 등의 역할을 담당
- 하나의 프로젝트는 여러 앱을 가짐
- 일반적으로 앱은 하나의 역할 및 기능 단위로 작성
3. 앱 등록
- 프로젝트에서 앱을 사용하기 위해서는 반드시!!! settings.py에서 INSTALLED_APPS 리스트에 추가해야 함
- INSTALLED_APPS : Django installation에 활성화된 모든 앱을 지정하는 문자열 목록
- 반드시 앱 생성 후 등록할 것!!!! (먼저 작성하고 생성하려고 하면 앱이 생성되지 않음)
- 앱 생성 ex) python manage.py startapp articles
- 앱 등록 순서는 되도록이면 Local apps -> Third party apps -> Django apps
'Django' 카테고리의 다른 글
05_Django ORM (0) | 2022.09.17 |
---|---|
04_HTML Form (0) | 2022.03.20 |
03_Template & DTL (0) | 2022.03.20 |
02_Request & Response (0) | 2022.03.19 |