Python to AI

Django

최 수빈 2024. 11. 15. 16:29

라이브러리(Library)

 

특정 기능을 수행하는 모듈이나 함수들의 집합

개발자가 필요에 따라 호출하여 사용할 수 있음

 

=> 라이브러리를 사용하는 개발자는 주도권을 가지고, 필요한 기능을 선택적으로 호출하여 코드에 통합

 

#라이브러리 사용 예지
import math

result = math.sqrt(16) #math라이브러리의 sqrt함수 호출, 제곱근 계산

print(result)

#4.0

 

 

프레임워크(Framework)

 

 

애플리케이션 개발의 기본 구조와 흐름을 제공하는 틀

일정한 방식에 따라 코드를 작성하도록 함

 

=> 개발자가 정의한 코드와 미리 제공된 코드를 결합해 동작, 일반적으로 프레임워크가 전체 흐름을 제어

 

*특징

 

제어의 역전(Inversion of Control)

프레임워크가 애플리케이션 흐름을 주도, 개발자는 프레임워크에서 요구하는 방식으로 코드를 작성

 

일관성

프레임워크는 일정한 패턴을 따르므로 코드 구조가 일관성을 가지며 유지보수가 용이

 

 

라이브러리 vs 프레임워크

 

제어 흐름

 

라이브러리 - 개발자가 흐름 제어

프레임워크 - 프레임워크가 흐름 제어

 

코드 작성 방식

 

라이브러리 - 원하는 기능만 선택적 사용

프레임워크 - 일정한 구조와 규칙에 따라 코드 작성

 

비유

 

라이브러리 - 여러 도구가 준비된 도구 상자, 필요한 도구(함수)를 선택해 작업 수행

프레임워크 - 설계도. 설계도에 따라 재료(코드)를 조립해 완성

 

 

Django

 

Python기반 고수준 웹 프레임워크

빠르고 효율적인 웹 애플리케이션 개발 지원

"Batteries-included" 철학을 땨르며, 웹 개발에 필요한 거의 모든 기능 내장 - 추가 설정 없이 바로 사용 가능

 

 

*주요 특징

 

웹 애플리케이션 개발 속도 높여줌

반복적인 작업 자동화, 개발자가 중요한 로직에 집중할 수 있게 도와줌

 

보안

웹 애플리케이션에서 흔히 발생하는 보안 문제를 방지하는 기능을 기본적으로 제공

SQL Injection, XSS, CSRF등 다양한 보안 문제 예방 가능

 

확장성

대규모 프로젝트에서도 사용할 수 있도록 확장 가능, 다양한 기능 손쉽게 추가 가능

 

DRY원칙

Don't Repeat Yourself 원칙 따르며 중복 코드를 최소화, 유지보수 쉽게함

 

 

*주요 구성 요소

 

모델(Model)

데이터베이스 구조를 정의, 데이터와 상호작용하는 역할

 

뷰(View)

사용자가 보는 화면 담당, 모델에서 가져온 데이터를 사용해 템플릿에 전달

 

템플릿(Template)

HTML을 생성하는 역할, 뷰에서 전달받은 데이터를 표시

 

URL 컨피그(URLcof)

URL과 뷰를 연결하는 역할, 사용자가 특정 URL로 접근할 때 어떤 뷰를 호출할 지 결정

 

 

*기본적 동작 흐름

 

URL요청 -> 뷰(view)호출 -> 데이터 처리 및 템플릿 렌더링 -> HTML응답

 

사용자가 웹 브라우저에 특정 URL요청, Django의 URL컨피그가 해당 URL에 매핑된 뷰를 호출, 뷰는 필요한 데이터를 모델에서 가져오고,  템플릿에 전달하여 HTML을 생성, 생성된 HTML을 웹 브라우저에 반환하여 사용자에게 표시

 

 

*가능 작업들

 

블록, 게시판 등 다양한 웹 애플리케이션 개발

데이터베이스 처리, 사용자 인증, 파일 업로드 등 웹 애플리케이션에서 자주 사용되는 기능을 간편하게 구현

 

관리자 인터페이스 제공

자동으로 관리자를 위한 인터페이스를 생서, 데이터베이스를 관리하기 쉽게 해줌

 

API개발

Django REST Framework(DRF)와 같은 도구를 사용하면 Django를 통해 RESTful API를 쉽게 개ㅏㄹ 가능

 

 

*Django사용의 기본 흐름

 

프로젝트 생성과 앱 구조 이해

1. 프로젝트 생성

2. 프로젝트 내에 여러 앱 구성

3. 각 앱은 특정 기능 담당(모델, 뷰, 템플릿, URL등), 프로젝트는 이러한 앱들을 묶어 관리)

 

Django 프로젝트 및 앱 생성 과정

 

  • Django 프로젝트 생성 (터미널)
django-admin startproject myproject
cd myproject

 

  • 앱 생성
python manage.py startapp myapp

'Python to AI' 카테고리의 다른 글

Python - Pandas  (4) 2024.11.25
MVT(Model-View-Template) design pattern에 기반을 둔 Django의 architecture  (3) 2024.11.15
Decorator, Context Manager  (0) 2024.11.14
Iterator, Generator  (3) 2024.11.14
File Objects - file mode, file method  (0) 2024.11.13