2022. 1. 13. 15:35ㆍ기타 공부들
플라스크 기본 사용법
Flask 시작하기
플라스크로 프로젝트를 할 폴더에 가상환경을 만들고, 플라스크를 설치하고 app.py에 아래 코드입력.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
# app.run() 괄호 안에 debug=True라고 명시하면 해당 파일의 코드를 수정할 때마다 Flask가 변경된 것을 인식하고 다시 시작한다.
Route(URL에 웹페이지 연결하기)
웹 브라우저에서 URL을 방문하면 서버에 요청을 보내고, 서버는 그 요청을 처리해서 브라우저에 응답을 반환하게 된다. 반환된 결과를 HTML 문서로 보내주면 그 웹 페이지를 브라우저가 띄워주게 된다.
Flask에서는 URL을 방문 할 때 준비된 함수가 실행되도록 하기 위해 route()데코레이터를 사용한다.이를 라우팅이라 한다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/login')
def login():
return render_template('login.html')
if __name__ == '__main__':
app.run('0.0.0.0', port=5001, debug=True)
이렇게 @app.route('/경로') 를 쓸 때 URL 경로는 반드시 “/” (슬래시)로 시작해야 한다.
또, 이걸 URL을 뷰 함수에 바인딩하는 방법이라고도 한다.
동적 URL 다루는 방법
경우에 따라 변경되는 동적 URL을 사용하려면 어떻게 해야 할까?
Flask에서는 뷰 함수에 바인딩 할 URL을 지정할 때 <variable_name>을 명시하는 게 가능하다. 그러면 이 변수는 뷰 함수에 인수 형태로 전달이 된다.
다시 app.py에서 이번엔 @app.route('/user')와 user()함수를 아래와 같이 수정해보자.
from flask import Flask
app = Flask(__name__)
@app.route('/')
@app.route('/home')
def home():
return 'Hello, World!'
@app.route('/user/<user_name>/<int:user_id>')
def user(user_name, user_id):
return f'Hello, {user_name}({user_id})!'
if __name__ == '__main__':
app.run(debug=True)
반환되는 값으로 f-string 포맷을 활용해서 문자열에 변수를 넣는다.
# f-string 예시
# 문자열 맨 앞에 f를 붙이고, 출력할 변수, 값을 중괄호 안에 넣습니다.
s = 'coffee'
n = 5
result1 = f'저는 {s}를 좋아합니다. 하루 {n}잔 마셔요.'
print(result1)
이렇게 하면 “/user/유저이름/유저아이디” 형식의 URL을 입력 받았을 때 유저이름과 유저아이디를 활용한 내용의 HTML 문서를 반환할 수 있다.
그리고 URL은 문자열이기 때문에 <converter : variable_name> 구문을 사용해서 URL에서 받은 변수 타입을 변형할 수 있다.
파이썬 Flask 사용법 2 (Jinja2 템플릿, 변수, 조건문/반복문)
제대로 된 웹 사이트를 만들고자 한다면모든 페이지마다 HTML 파일을 각각 작성할 게 아니라 일관된 구조와 기능을 가진 템플릿(template)을 활용해야 한다.
Flask에서는 Jinja2라는 템플릿 엔진을 사용해서 애플리케이션 내 변수와 반복문, 조건문 등을 포함하는 HTML 파일을 렌더링할 수 있다.
템플릿 렌더링해서 URL에 연결하기
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template("index.html")
if __name__ == '__main__':
app.run(debug=True)
index.html파일을 생성하고 로컬호스트 5000으로 접속하면 첫 화면이 index.html을 띄워준다. @app.route('/')에 바인딩 된 함수가 render_template("index.html")이라고 되어 있기 때문에 해당 문서를 렌더링해서 반환하는 거다.
템플릿에서 변수 사용하기
템플릿 내에서 변수를 사용하려면 render_template() 괄호 안에 렌더링 할 HTML 파일 이름에 이어 변수명을 키워드 인수를 추가해주면 된다. 둘 이상의 변수를 추가하려면 쉼표로 구분하고 html에서 이 변수를 사용할 때는 {{ 변수명 }}과 같은 식으로 불러와서 쓰면 된다.
템플릿에서 if 조건문 사용하기
{% if문 %} 괄호 안에 조건문을 써주고, {% endif %}로 마무리하면 된다.
템플릿에서 for 반복문 사용하기
{% for문 %} 괄호 안에 반목문을 써주고, {% endfor %}로 마무리하면 된다.
'기타 공부들' 카테고리의 다른 글
무중단배포 test (0) | 2022.03.28 |
---|---|
EC2 서버의 Time Zone을 변경하는 법 : 배포 후 작성된 시간이 이상하다면? (0) | 2022.01.26 |
쿠키, 세션, 토큰, JWT (1) | 2022.01.13 |
서버사이드 렌더링 개념 (0) | 2022.01.13 |
Git 명령어 총정리집 (0) | 2022.01.12 |