Django 를 들어가며

chanloper·2024년 8월 13일

Django

목록 보기
1/8

프레임워크 (Framework)

소프트웨어 개발을 위한 구조적인 툴

  • 개발자들이 프로그램을 만들 때 자주 사용하는 여러 도구를 모아놓은 것
  • 특정한 작업이나 목적을 수행하기 위한 코드 뭉치
    (Django,Flask,FastAPI)

사용하는 이유

  • 생산성이 향상된다
  • 부가적인 부분을 프레임워크에 맡기고, 핵심 로직에만 집중할 수 있다.
  • 구조적으로 안정적인 형태로 개발이 가능하다.
  • 빠르고 안정적이며, 높은 품질의 소프트웨어의 개발이 가능해진다.

Django

Python 기반의 웹 프레임워크

  • Djago를 다루기 위해 다른 언어를 따로 배울 필요가 없다.
    Python을 사용해서 웹 개발이 가능하다.
  • 웹 프레임 워크
    빠른 웹개발을 위해 모든 것이 준비되어 있다.

Why Django?

  • DRY (Don't Repeat yourself) 원칙
    코드 중복을 최소로 하는 개발 원칙을 따름

  • 갖춰진 프레임워크
    보안, 관리자 기능, Auth 등

  • 풍부한 레퍼런스

  • 검증된 프레임워크
    어떠한 도구 (프레임워크)를 고를 때는 그것을 어디에 사용했는지를 봐야한다.
    스포티파이, 인스타그램, 토스, 화해 등에 Djano가 사용되었다.

개발 환경 구성 (Mac OS)

mkdir django -> 디렉터리 생성
ls - 현재 파일 경로 확인
python -m venv venv -> 가상 환경으로 구축
source venv/bin/activate -> 전역이 아닌 가상 환경의 pip list 로 사용
전역으로 설정하여도 크게 지장이 가지 않는다.

pip freeze > reqirements.txt -> 충돌이 일어나지 않도록 버전들을 명시해서 기록해주는 텍스트 파일(의존성 파일) 생성
pip install -r reqirements.txt -> 명시된 버전들을 한 번에 설치해주는 명령어

프로젝트 만들기

django-admin startproject (my_first_pjt)
cd my_first_pjt -> 경로 이동

python manage.py runserver -> 서버 가동
ctrl + c -> 서버 종료

  • settings.py - 프로젝트의 설정을 관리하는 곳
  • urls.py - 어떤 요청을 처리할지 결정하는 곳
  • _init__.py - 하나의 폴더를 하나의 파이썬 패키지로 인식하도록 하는 파일
  • wsgi.py - 웹 서버 관련 설정 파일
  • manage.py - Django 프로젝트 유틸리티 (조종기)

주로 사용하게 될 파일은 settings.py , urls.py 가 된다.

D-jango App

Project : 어플리케이션의 집합체
App : 각각의 기능 단위 모듈

  • 여러개의 앱으로 나누어 개발하는 것을 권장한다.

python manage.py startapp (articles) -> App 생성

  • 장고에서 App의 이름은 복수형으로 짓는 것을 지향한다.

my_first_pjt 폴더 settins.py 의 INSTALLED_APPS =[
'(articles)', ] 을 입력하고 저장 -> App 등록

  • admin.py - 관리자용 페이지 관련 설정
    장고는 기본적으로 프레임워크 안에서 관리자용 페이지를 제공한다.
  • app.py - 앱 관련 정보 설정
  • models.py - DB관련 데이터 정의 파일 🔎
  • tests.py - 테스트 관련 파일
  • views.py - 요청을 처리하고 처리한 결과를 반환하는 파일 🔎

클라이언트 - 서버 구조

Client

  • 인터넷에 연결된 장치, 웹 브라우저
    서비스를 요청하는 주체 (사용자)

Server

  • 자원을 가지고 있는 컴퓨터
    요청을 처리하고 응답하는 주체

구글 사이트에 접속
➡️ 어딘가에 있는 구글 사이트를 가지고 있는 컴퓨터에게 'Google.html' 을 달라고 요청

  1. Google.html 파일을 요청함
  2. 구글 서버가 요청을 받아서 Google.html 파일을 우리 컴퓨터에게 전달함
  3. 우리 컴퓨터의 웹 브라우저가 Google.html 파일을 해석해서 이쁘게 보여줌
  • 구글 서버 (Server) - 웹 브라우저 (Client)

Django - MTV Pattern

MTV 패턴은 MVC 패턴을 변형한 것이다.

MVC
MTV
Model
Model
View
Template
Controller
View

각 각
View의 기능을 Template가, Controller의 기능을 View가 수행한다.

MTV Pattern

  • Model
    MVC에서의 Model 이다.
    데이터와 관련된 로직을 처리한다. (데이터 구조 정의, 데이터베이스 기록 관리)

  • Template
    MVC에서의 View 이다.
    레이아웃과 화면상의 로직을 처리 (UI와 레이아웃)

  • View
    MVC에서의 Controller 이다.
    메인 비즈니스 로직을 담당한다.
    클라이언트의 요청에 대해 처리를 분기하는 역할을 한다. (DB조회, 외부 요청, 응답을 만들어서 클라이언트에게 전달 등등)

Django Template Language (DTL)

변수 (Variable)
{{ variable }}

  • view의 context로 넘긴 데이터를 접근할 수 있다.
  • . 을 사용하여 변수의 속성 값에 접근 가능
  • render()의 세 번째 인자인 context에 dict형태로 넘겨진 데이터중 key값이
    template에서 사용 가능한 변수가 된다.

필터 (Filters)
{{ variable|filter}}

  • 변수에 어떠한 작업을 추가적으로 더 해 수정하고 싶을 때 사용한다.
  • 약 60개의 built-in template filter가 제공되며 일부 필터는 인자를 받기도 한다.
  • 필터의 사용 예시
    view에서 넘겨준 데이터가 Aiden Lim 이라고 가정할 때, 소문자로 보이게 하고 싶다면
    {{ first_name|lower }} 처럼 | 뒤에 명령어를 입력해주면 된다.

태그 (Tags)
{% tags %}

  • 반복문 또는 논리, 조건문을 수행하여 제어 흐름을 만들거나 특수한 기능을 수행할 때 사용한다.
  • 일부는 시작 태그와 종료 태그가 존재한다.
    (예 : 조건문 태그 )
    {% if ~ %}
    {% end if %}

명시해야할 것은 파이썬 코드가 안 쪽에 들어가는 것이 아닌 DTL문법에 불과하다는 것이다.
이 둘은 엄연히 다른 존재이다.

profile
이것 뭐에요?

0개의 댓글