Share
Sign In
TIL 웹개발
TIL 웹 개발 - Flask 이해하기
서경태
👍
💬
GPT 가라사대
Flask는 Python으로 작성된 마이크로 웹 프레임워크입니다. Flask는 경량화된 웹 프레임워크로, 필요한 최소한의 핵심 기능만을 제공하여 사용자가 필요한 기능을 플러그인 형태로 추가할 수 있습니다.
이해하기
Flask는 2010년에 Armin Ronacher가 만든 웹 프레임워크이다. 이름 자체는 '플라스크' 라는 단어에서 영감을 받아 '작고 가벼운' 이라는 의미를 내포하고 있다. Django와 같은 큰 프레임워크와 대비되며 작은 프로젝트나 간단한 웹 애플리케이션을 빠르게 개발할 수 있는 마이크로 프레임워크다.
예제
from flask import Flask
app = Flask(name)
@app.route('/')
def home():
return ()
if name == 'main':
app.run(debug=True)
from flask import flask 에 이어 render templates, request를 주로 사용하고 마지막엔 redirect, url_for까지 사용했다. redirection은 단순히 url만 복사해서 붙여넣기 하면 끝나는 단순한 기능으로 알았는데 그 안엔 여러 세팅들이 필요했다.
구조
@app.route('/')
def home():
return ()
위 코드를 기본 구조로 괄호 안에 페이지의 이름이 들어간다.
그리고 def 아래에는데이터를 넣고 웹에서 요청하면 데이터가 나올수 있도록 세팅한다.
처음에는 그냥 따라 쓰기만해서 구조가 눈에 들어오지 않았는데 오히려 각 기능들을 달고나니 구조가 조금씩 읽히기 시작했다.
Subscribe to 'kyugntae-ai'
Welcome to 'kyugntae-ai'!
By subscribing to my site, you'll be the first to receive notifications and emails about the latest updates, including new posts.
Join SlashPage and subscribe to 'kyugntae-ai'!
Subscribe
👍
Other posts in 'TIL 웹개발'See all
서경태
TIL 웹개발 - while 반복문 break, continue 사용하기
개인 과제로 주어진 두 문제 Up&Down 게임 만들기 가위, 바위, 보 게임 만들기 이 두 과제를 하는데 하루를 다 써버렸다... 핵심은 while 반복문 사용하기 사용법은 간단하지만 여러 조건들이 붙으며 구조를 잡는데 꽤나 애를 먹었다. 가장 어려웠던 부분은 게임을 한 차례 진행 후 새로 시작하는 것과 그 기록을 남기는 것. Up & Down 게임 우선 게임 내용은 쉽게 만들었다. 하지만 문제는 랜덤으로 나온 숫자가 코드를 실행할때마다 새롭게 생성이 되어 게임 진행이 안됨 게임을 마치고 다시 시작하는지 혹은 마치는지 + 기록 표시 1번의 문제는 구글링 하다보니 구조적으로 해결이 되었다. x는 컴퓨터가 만든 랜덤 숫자이고 n은 사용자가 입력한 숫자이다. (사실 input을 쓰면 터미널에서 진행할 수 있는지 모르고 처음엔 VS code에서 index.html을 만들었다... request함수 쓰려고...) x가 생성되고 n을 입력하며 힌트를 얻어 맞추면 끝나는데 n을 입력할때마다 x의 값도 바뀌니 게임 진행이 안되었다. 확률을 줄여나가는 게임인데 계속 1/100 확률 게임을 만들어 버린 것. 해결 방법은 x는 외부 while 반복문에 넣고 n은 내부 while 반복문에 위치해서 n = x 조건이 성립 될때까지 n의 변수를 입력하는 것이었다. 그리고 게임이 끝나면 다시 시작할지 그대로 종료할지 되묻는데 이때는 break와 exit()를 사용했다. while 반복문에서 break, continue 그리고 빈칸 break는 while 반복문이 조건을 성립하면 멈춘다. 위 코드의 경우 게임 재시작 의사를 물을 때 y를 누르면 내부 while 반복문이 종료되고 다시 외부 while 반복문이 시작되며 랜덤 숫자가 주어지고 게임이 진행된다. continue는 break과 달리 while 반복문 조건이 성립되면 건너뛰고 이어뛰는 함수다. (예외 처리에 사용 가능할지도?) 빈칸은 조건 성립이 안되었기에 처음부터 다시 도는 것이다. y or n을 고르는 단계에서 a,e,d같은 문자열이 입력될 경우 print("다시 입력해주세요.")라고 하면 y or n 선택 단계로 돌아간다.
서경태
TIL 웹 개발 - from ... import ...
파이썬 강의를 듣던 중 갑자기 궁금한게 생겼다. (난 왜 자꾸 이런거에 꽂히는 모르겠다...) 여러 함수들을 배우는데, request를 사용할 땐, 맨 위에 import requests를 써야 함수가 작동한다. datetime을 사용할 땐, 맨 위에 from datetime import datetime을 써야 함수가 작동한다. 오케이... 이렇게 맨 위에 뭔가를 적어야하는 것은 내장함수가 아니기 때문에 "나 이거 쓸래!" 라고 말해줘야 한다. 근데 왜 어떤건 from을 써야하고 어떤건 그냥 import만 써도되는지 궁금했다. 바로 ChatGPT에 물어봤다. (유료 구독하길 잘했다...) 우선 모듈과 클래스라는 개념이 있다. import 뒤에 오는게 모듈이고 함수를 작성할때 접두사로 사용하는 것이 클래스다. 모듈 내에 클래스가 있어서 모듈을 임포트하고 클래스써서 함수를 사용한다고 이해하면 쉽다. 그럼 이제 from을 왜 쓰느냐? GPT가 대답해준다. 이 모듈은 여러 클래스를 포함하는 모듈입니다. datetime 모듈 내의 datetime 클래스는 특히 자주 사용되기 때문에, 이를 편리하게 임포트하기 위해 다음과 같이 사용합니다: from datetime import datetime 이 방식은 datetime 모듈 내의 datetime 클래스를 직접 임포트합니다. 따라서 해당 클래스를 사용할 때 모듈 이름을 접두사로 사용할 필요가 없습니다. 예를 들어: current_time = datetime.now() 접두사로 datetime을 쓰는데 접두사를 사용할 필요가 없다고 알려준다. ??? 결론부터 이야기하자면, 모듈안에 여러 클래스가 있는 경우! from을 써서 문자열이 길어지는 것을 방지하는 것이다. 비교로 알아보면 좀 더 이해가 빠르다. import datetime(모듈) current_time = datetime(모듈).datetime(클래스).now() from datetime(모듈) import datetime(클래스) current_time = datetime(클래스).now() 이처럼 1번에서는 import만 쓸 경우, datetime 모듈을 쓸거야 라고 말하고 뒤에 datetime 클래스를 쓸거야 라고 해야한다. 반면에 2번처럼 from을 쓰면 datetime 클래스만 쓰면 된다. 앞서 GPT가 알려준 것처럼 datetime 모듈에는 여러 클래스가 있다. 그중 3가지를 써서 시차를 구하는 코드를 작성해보자. from datetime import datetime, timezone, timedelta import datetime utc_time = datetime.now(timezone.utc) print("Current UTC time:", utc_time)
서경태
TIL 웹개발 - 미니프로젝트
팀원을 소개하는 웹페이지 제작 프로젝트를 진행했다. 그 중에서 나는 팀원의 데이터를 정리하고 html에 연결하는 작업을 맡았는데 여러 시행착오가 있었다. SQLalchemy 데이터 베이스를 생성하고 SQLalchemy를 설치. pip install flask-sqlalchemy 이런 식으로 데이터 구조를 짠 후 하나씩 데이터를 채워 넣는데 이 부분이 굉장히 고된 작업이었다. flask shell에서 터미널 형태로 데이터를 넣다보니 한땀한땀 만드는 느낌. 데이터 포맷을 완성하고 다른 팀원이 만든 html과 연결하는 작업을 진행했다. 라우트 @app.route('/') def show_members(): members = Member.query.all() return render_template('index.html', data=members) 라우트 기본구조다. 가장 밑에 index.html로 html과 연결시켜주고. 데이터에 내가 만든 구조를 넣는다. 그럼 html에서 이렇게 {{ data[2].role }}로 표기하면 데이터 값이 나온다. 반복문을 사용해 최대한 노가다를 줄이려했지만 실피했다. 실패 원인은 모르겠다.... 마우스가 호버링하면 나오는 문구때문이지... 폴더 구조 다른 팀원이 만든 html과 css파일을 넣고 데이터베이스와 연결하니 실행이 되지 않았다. 그 원인은 폴더 구조. 아래와 같은 형태로 만들어야한다. gpt 센세가 알려줬다. 내친구 GPT 친구는 아니고 확실히 센세다. 결제해놓고 좀 후회했는데 이제 없으면 아무것도 못한다. 오늘 좀 괴롭혔더니 지혼자 꺼지더라... 그래도 고맙다.