[Flask] 가장 빠른 풀스택 / 섹션 6. flask와 보다 다양한 프론트엔드
섹션 6. flask와 보다 다양한 프론트엔드
- Jinja2 template
- 부트스트랩
Jinja2 template
html에 조건문, 반복문, 변수 등을 삽입할 수 있도록 하는 엔진으로, ’{{ 변수명 }}‘, ’{ % 파이썬 소스코드 % }’ 가 핵심 문법이다.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/hello/<user>')
def hello_name(user):
return render_template('variable.html', name = user)
if __name__ == '__main__' :
app.run(host = '0.0.0.0', port = "8080")
위의 경우, python 코드에서 URL을 통해 받은 user 파라미터를 name 이라는 이름으로 variable.html에 전달을 해주고 있으며, 이 때 html의 {{name}} 에는 python에서 전달해준 값이 표시된다.
ex) /hello/PSW 의 주소에서는 Hello PSW 가 출력됨
반복문
{ % for % }로 선언 후, { % endfor % } 로 반복문이 끝났음을 알림
return render_template('variable.html', values=[1, 2, 3])
조건문
{ % if % }, ( { % elif % }, { % else % } ), { % endif % } 를 활용하여 조건문을 작성할 수 있다
크롤링 데이터를 그대로 뿌려보면 ?
from flask import Flask
import requests
app = Flask(__name__)
@app.route("/google")
def get_google():
response = requests.get("http://www.google.co.kr")
return response.text
내가 만든 웹의 /google에 http://www.google.co.kr 의 html 파일을 그대로 가져와서 띄울 수 있으나, css 또는 사진과 같은 소스들은 가져올 수 없다.
* but 당연히 저작권 때문에 하면 안 됨
부트스트랩
CDN
CDN (Contents Delivery Network) : 물리적으로 떨어져 있는 사용자에게 컨텐츠를 빠르게 제공할 수 있는 기술로, 사용자와 가까운 Cache Server에 해당 컨텐츠를 저장해두고, 컨텐츠 요청 시 기존 서버가 아닌, Cache Server가 응답하도록 한다.
부트스트랩을 사용할 때에 직접 파일을 나의 서버에 다운받지 않고도, cdn 서버에 올려진 파일의 링크를 불러와 사용할 수 있다.
* 캐시 서버 : 인터넷 사용자가 자주 찾는 데이터의 복사분을 축적하여 이용자의 서버에 신속하게 데이터를 제공해주는 서버이다. 인터넷 검색을 할 때마다 웹 서버를 가동시킬 경우 발생하는 시간을 절약해주며, 인터넷에서의 과부하 현상 또한 줄여준다.
소감
Jinja2 template 이름이 거리감 느껴져서 굉장히 어렵고 새로운 언어일 줄 알았는데 어라 이미 계속해서 써오던 템플릿이었다. 겁먹기 전에 Jinja2가 무엇인 지 검색이라도 해볼 걸 ! 이라는 생각이 들었다.
부트스트랩의 경우 몇 번 사용해 본 경험이 있는데, (다운로드로도, 링크로도 사용해 봄) 링크로 연결하여 사용할 수 있도록 해주는 것이 CDN 이라는 것은 처음 알았다. 물리적으로 떨어진 곳에 서비스를 원활히 제공하기 위해 별도의 서버가 존재한다는 것이 신기하다. 계속 서버 개발을 이어가다보면 언젠가 서버를 분리하여 캐시 서버를 별도로 구축하는 날이 오겠지 ?? 소프트웨어는 알면 알 수록 복잡하고 대단하다..
+) 사실 해당 강의의 섹션 6에서는 Vue도 간단히 다루고 넘어가는데, 첫 강의를 열자마자 이건 내가 지금 들어서 받아들일 수 있는 지식이 아니구나 싶어 뒤로 미뤄두었다. node도 공부해보고 백엔드도 더 공부해본 후, 다시 들어야 그림을 그려볼 수 있을 것 같다