본문 바로가기
Django

01_Django?

by MeaninGood 2022. 3. 19.
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