파이썬(Python) Flask - Templates
오늘은 Flask 에서 템플릿(Template) 파일 렌더링 및 데이터 전달에 대해서 알아보겠습니다.
설치 시에 대부분의 기능을 지원하는 중량 프레임워크인 Django에 비해서 Flask는 아무것도 없는 초기
기본 레이아웃 형태로 설치가 지원되고 있습니다.
Flask는 매우 가볍고 심플하고 경량화를 추구하는 철학때문에 필요한 패키지들을 별도로 사용자가
설치하거나 직접 개발해서 사용해야 합니다.
쉽게 이야기 하면 많은 곳에서 활용하고 있는 자유도가 대단히 높은 프레임워크라고 볼 수 있습니다.
웹 어플리케이션 제작에 있어서 데이터를 가공한 후 사용자에게 View 화면을 제공하는 Templates 기능은
반드시 학습해야 될 내용이라 볼 수 있습니다.
그러면 문서 하단에서 간단하게 예제를 작성해보겠습니다.
Flask 관련 포스팅 : Flask 관련
Flask 관련 포스팅 : Flask 관련
파이썬(Python) Flask - Templates 예제 소스 코드
플라스크 Tempates 기능 구현을 위해서 플라스크 엔진에서 미리 가공 된 데이터를 전달 후 index.html 파일을 통해서 플라스크에서 함께 렌더링하는 보통 웹 프레임워크의 기본적인 예제입니다.
index.html
123456789101112131415161718192021222324252627 <!DOCTYPE html><html> <head> <title>Flask Template Example</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" media="screen"> <style type="text/css"> .container { max-width: 500px; padding-top: 50px; font-size: 16px; } </style> </head> <body> <div class="container"> <h3><p>Binding String : {{my_str}}</p></h3> <!-- my_str 바인딩 --> <h3><p>Bind List Value : {{my_list[1:3]}}</p></h3> <!-- my_list 바인딩 --> <h3><p>Loop list:</p></h3> <!-- my_list 순회 --> <ul> {% for n in my_list %} <li>{{n}}</li> {% endfor %} </ul> </div> </body></html> cs
- 17번 라인 : my_str 변수를 통해서 데이터 바인딩
- 18번 라인 : my_list 변수를 통해서 배열 데이터 슬라이스 처리 후 바인딩
- 21-23번 라인 : my_list의 배열 데이터를 순회 하면서 li 태그에 바인딩
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <!DOCTYPE html> <html> <head> <title>Flask Template Example</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" media="screen"> <style type="text/css"> .container { max-width: 500px; padding-top: 50px; font-size: 16px; } </style> </head> <body> <div class="container"> <h3><p>Binding String : {{my_str}}</p></h3> <!-- my_str 바인딩 --> <h3><p>Bind List Value : {{my_list[1:3]}}</p></h3> <!-- my_list 바인딩 --> <h3><p>Loop list:</p></h3> <!-- my_list 순회 --> <ul> {% for n in my_list %} <li>{{n}}</li> {% endfor %} </ul> </div> </body> </html> | cs |
- 17번 라인 : my_str 변수를 통해서 데이터 바인딩
- 18번 라인 : my_list 변수를 통해서 배열 데이터 슬라이스 처리 후 바인딩
- 21-23번 라인 : my_list의 배열 데이터를 순회 하면서 li 태그에 바인딩
flask_template.py
flask_template.py
12345678910111213141516 from flask import Flask, render_templateapp = Flask(__name__) @app.route("/")def template_test(): return render_template( 'index.html', #렌더링 html 파일명 title="Flask Template Test", #title 텍스트 바인딩1 my_str="Hello Flask!", #my_str 텍스트 바인딩2 my_list=[x + 1 for x in range(30)] #30개 리스트 선언(1~30) ) if __name__ == '__main__': app.run(debug=True) cs
- 1번 라인 : flask 및 관련 패키지 import
- 2번 라인 : Flask 객체(인스턴스) app 할당- 9, 10, 11번 라인 : View 페이지에 응답 할 string, array 데이터 선언(title, my_str, my_list)- 16번 라인 : 서버 실행(디버그 모드 True)- 기본적으로 Root 디렉토리에 Templates 폴더 생성 필요
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from flask import Flask, render_template app = Flask(__name__) @app.route("/") def template_test(): return render_template( 'index.html', #렌더링 html 파일명 title="Flask Template Test", #title 텍스트 바인딩1 my_str="Hello Flask!", #my_str 텍스트 바인딩2 my_list=[x + 1 for x in range(30)] #30개 리스트 선언(1~30) ) if __name__ == '__main__': app.run(debug=True) | cs |
- 1번 라인 : flask 및 관련 패키지 import
- 2번 라인 : Flask 객체(인스턴스) app 할당
Flask Templates의 추가적인 상세 설명은 이 곳을 참고해 주세요.
Flask Templates의 추가적인 상세 설명은 이 곳을 참고해 주세요.
파이썬(Python) Flask - Templates 실행 화면
아래 이미지로 Templates 기능의 프로젝트 폴더 구조(확인 중요) 및 실제 실행 화면을 확인하실 수 있습니다.
실제 실행 화면
Flask 공식 Reference : Flask 관련
Flask 공식 Reference : Flask 관련
마무리
이번 포스팅에서는 플라스크 프레임워크를 활용해서 간단한 Templates 렌더링 테스트를 진행했습니다.
경량화를 추구하는 마이크로 프레임워크인 플라스크는 프로젝트가 진행 될 수록 단점이 두드러지는 경향이
있습니다. 검증되지 않은 많은 패키지를 설치하는 것도 원인이 될 수 있겠습니다.
하지만, 직관적이고 생산성이 가장 높은 언어로 생각되는 파이썬 플라스크를 활용해서 아주 빠르게
원하는 웹 페이지를 작성하고 나아가 웹 어플리케이션을 편하게 제작할 수 있는 큰 장점이 있습니다.
첨부된 소스코드를 다운받아서 반드시 한 번 실행 해보시는 것을 추천드립니다.
다음 시간에도 플라스크(Flask)의 다양한 기능 및 도움이 되는 기능을 포스팅 하도록 하겠습니다.
소스코드 다운로드 : flask_template.zip
'웹 백엔드 > Django & Flask' 카테고리의 다른 글
Flask(플라스크) - 파이썬 Flask 로그인(Login) 및 세션, DB 연결 예제 및 소스 (4) | 2019.05.13 |
---|---|
Django(장고) - 로깅(Logging) 설정 및 DB SQL 쿼리(Query) 확인 (0) | 2019.02.14 |
Flask(플라스크) - 파이썬 Flask 파일 업로드(file upload) 예제 및 소스파일 (7) | 2018.06.20 |
Flask(플라스크) - 파이썬 Flask RestFul API 서버 작성 예제 및 다운로드 (0) | 2018.01.21 |
Django(장고) - 로깅(Logging) 설정 및 로그(Log)파일로 저장 (0) | 2017.10.09 |