MS AI school 6기

[Microsoft AI School 6기] 4/21(82일차) 정리 - CRUD (1)

parkjiyon7 2025. 4. 21. 17:49

CRUD 애플리케이션 개발

 

CRUD란

 

Create, Read, Update, Delete

데이터를 다루는 소프트웨어 애플리케이션의 기본적인 4가지 기능

 

CRUD

 

- 소프트웨어 개발 내에서 데이터 관리 및 조작에서 수해오디는 네 가지 필수 작업

- 이러한 작업은 데이터베이스 또는 데이터 스토리지 시스템과 상호작용하는 대부분의 애플리케이션 중추를 형성

 

CRUD 작업의 이점

 

CRUD 작업의 이점

 

 

프레임 워크(Frame Work)

 

소프트웨어를 더 쉽게, 더 빠르게 만들 수 있도록 기본 구조와 틀을 제공하는 도구

- 소프트웨어 개발의 뼈대를 제공

 

프레임워크의 특징

 

frame work

 

- Python을 기반으로 하는 대표적인 Web Framework는 django와 flask

- flask의 경우, micro framework

 

Django vs Flask

 

Django vs Flask

 

Django vs Flask

 

Flask

- 파이썬 웹 프레임워크

- 마이크로 웹 프레임워크

- 확장성 있는 설계

 

- 플라스크에서 프로젝트는 하나의 웹 사이트
- 플라스크 프로젝트를 생성하면 웹 사이트를 한 개 생성하는 것과 같다.
- 플라스크 프로젝트 안에는 보통 한 개의 플라스크 애플리케이션이 존재

 

 

가상 환경 설정

 

프로젝트 폴더 생성 > 마우스 오른쪽 > 통합 터미널에서 열기

 

가상환경 설정

 

가상환경 설정

 

- mac의 경우 python3로 진행

 

가상환경

 

이와 같이 activate가 존재하면 가상환경이 설치가 된 것이다.

가상환경을 실행하고 싶은 경우,

bin 폴더에 들어가

source activate

명령어를 작성해면 된다.

 

flask 설치

pip install flask

 

가상환경 배치 파일

@echo off

cd 프로젝트 경로

프로젝트 루트 경로/venv/bin activate

 

vim ~/.zshrc

치고 들어가면 파일의 내용들이 뜨는데 거기서 i를 누르면 편집가능

alias <사용할 명령어>="source ~/<프로젝트 가상환경 경로>/bin/activate"

해당 라인 입력 후에 esc -> :wq 하면 저장 후 종료가 되고

source ~/.zshrc로 .zshrc 파일을 재실행

이제 alias 설정이 됐으니 아까 설정한 <사용할 명령어>를 입력하면 가상환경 실행된다

 

Flask 확인

 

flask

 

app.py를 만든 후, 

해당 프로젝트에 들어가 flask run 명령어를 입력하면 웹화면을 확인할 수 있다.

제공되는 로컬 주소를 브라우저에 입력하거나

ctrl을 누르고 클릭하면 된다.

 

flask

 

flask app 이름 바꾸기

app.py의 파일명을 바꾼 후 터미널에서

윈도우: set FLASK_APP=myapp

Mac: export FLASK_APP=myapp

 

flask run

 

flask app

 

디버깅 키기

윈도우: set FLASK_DEBUG=true

Mac: export FLASK_DEBUG=true

 

flask app

 

프로젝트 구조

  • models.py : 데이터베이스 처리 파일
  • forms.py : 서버로 전송된 폼 처리 파일
  • views 디렉토리 : 화면 구성
  • static 디렉토리 : CSs, 자바스크립트 , 이미지 파일 등 저장
  • templates 디렉토리 : HTML 파일 저장
  • config.py : app 프로젝트 설정 파일

 

프로젝트 구조

 

app.py의 경우, 파일명을 app으로 지정한다면, __init__.py로 이름을 변경하여 준다

 

 

라우팅(Routing)

 

경로에 따라 페이지 등록

 

Route 는 명사로 한 곳에서 다른 곳으로 가기 위한 길 경로

라우팅 : 어떤 데이터를 목적지까지 보내기 위한 경로를 선정하는 과정

라우팅 프로토콜 : 라우팅을 할 때 어떻게 데이터가 목적지까지 도달할 길을 만들지를 정의한 규칙 , 규약

 

라우팅

 

위와 같이 라우팅을 해주면, 페이지 별로 설정해줄 수 있다

 

라우팅

 

여기서 포인트는, 

'/login/'과 같이 경로 뒤에 /를 추가해주면, 사용자가 뒤에 /붙이는 여부와 상관없이 접속이 가능하다. 즉, 주소/login과 주소/login/이 같은 페이지를 보여준다.

 

여러 개의 경로가 같은 페이지를 나오게 하고 싶은 경우, 여러 개의 경로를 같이 등록하여 주면 된다.

 

라우팅

 

위와 같은 코드의 경우,

 

라우팅

 

라우팅

 

두 화면이 같은 결과를 보여줌을 알 수 있다.

 

동적 라우팅

하나의 페이지에 여러 게시글이 존재할 수 있다.

즉, 하나의 페이지에 동적으로 게시물이 나오도록할 수 있다.

 

동적 라우팅

 

동적 라우팅

 

예를 들어, 1번 게시글의 경우, 위와 같이 뜬다.

이때, id의 type은 string 이다

 

동적 라우팅

 

특정 타입으로 지정하고 싶은 경우 아래와 같이 한다

동적 라우팅

 

이럴 경우, 형식이 다른 문자가 들어오면 에러가 뜬다

 

동적 라우팅

 

Tip!

flask routes

명령어를 사용하면, 현재 라우팅 되고 있는 목록을 볼 수 있다.

 

flask routes

 

 

블루 프린트(Blueprint)

 

  • 라우팅 함수 
  • URL 과 함수의 매핑을 관리하기 위해 사용하는 클래스

Flask의 블루프린트
- 애플리케이션의 구조를 모듈화하고 코드를 정리하기 위해 사용하는 도구
- 블루프린트는 Flask 애플리케이션의 특정 부분을 캡슐화하여 독립적으로 관리할 수 있도록 해줌
-> 예를 들어 , 사용자 인증 , 블로그 , 대시보드 등을 각각 별도의 블루프린트로 나눌 수 있음
- 블루프린트를 사용하면 애플리케이션의 라우팅 , 뷰 함수 , 템플릿 , 정적 파일 등을 여러 파일이나 모듈로 나눌 수 있음
- 이를 통해 코드가 많아져도 쉽게 관리할 수 있고 , 확장성 있는 애플리케이션을 작성할 수 있음

 

-> 여러 가지 기능들을 모듈화

 

블루 프린트

 

login 페이지 만들기

 

app > views > auth view

blue print

 

이와 같이 지정하면 웹페이지 주소는

/auth/login으로 들어가야 한다.

 

app > __init__.py는 다음과 같다

blue print

 

 

render template

 

 템플릿 엔진

  • JinjaZ 와 함께 동작
  • Flask 에서 HTML 파일을 렌더링하고 , 동적으로 값을 전달해 웹 페이지를 생성할 때 사용하는 함수
  • 이를 통해 서버에서 처리한 데이터를 사용자에게 표시할 수 있음
  • HTML 파일에 Python 데이터를 삽입하거나 동적인 내용을 표시할 수 있게 함

HTML 파일은 대부분 template 폴더에 존재

 

app > templates > index.html

index.html 추가

 

render template

 

app > views > main_view.py

render_template을 적용하면 다음과 같다

 

render template

 

이와 같이 적용하면 아래와 같이 뜬다.

 

render template

 

그 외 변수를 지정하여 html에 넘겨줄 수 있다

main_view.py에 아래와 같이 지정하면, 

 

render template

 

render template

 

HTML에서 위와 같이 받아올 수 있다

{{}}에서 바깥쪽 {}는 python 사용을 의미하며 안쪽 {}는 변수를 의미한다고 생각할 수 있다.

이와 같이 홈페이지를 구성하면 아래와 같이 브라우저에서 볼 수 있다.

 

render template

 

조건문

조건문 적용 또한 가능하다.

 

박지민을 관리자로 가정한다면

index.html

 

render template

 

render template

 

render template

 

이와 같이 조건문을 적용하여 rendering을 할 수 있다.

 

반복문

for문의 경우 아래와 같이 적용할 수 있다

 

render template

 

render template

 

결과를 확인하면 다음과 같다

 

render template

 

참고로 <p>태그 대신 inline 요소인 <span>을 넣으면 줄바꿈이 안되게 할 수 있다.

 

 

오늘의 간단한 후기

 

Flask에 대해 본격적으로 배워보는 것은 처음인 것 같다. 프로젝틀를 하면서 활용해 본 적은 있지만, 본격적으로 배우는 것은 처음이라 기대가 된다. 또한, 블루 프린트에 대해 처음알게 되었다.

 

 

출처

 

-If any problem for references, or any questions please contact me by comments.

-This content is only for recording my studies and personal profiles

 

일부 출처는 사진 내에 표기되어 있습니다

본문의 내용은 학습과 개인 profile 이외의 다른 목적이 없습니다

출처 관련 문제 있을 시 말씀 부탁드립니다

상업적인 용도로 사용하는 것을 금합니다

본문의 내용을 Elixirr 강의자료 내용(인선미 강사님)을 기반으로 제작되었습니다

Micrsoft에서 제공하는 정보를 담고 있습니다.

깃허브 소스코드의 내용을 담고 있습니다

본문의 내용은 MS AI School 6기의 강의 자료 및 수업 내용을 담고 있습니다.

반응형