728x90
반응형
렌더링
-> flask 내에서 html파일을 따로 만들어 웹 페이지를 제작할 수 있다
-> render_template()를 사용하여 html을 브라우저에 보여줄 수 있다
-> 렌더링할 html파일은 같은 폴더 내에 templates 폴더를 생성해 templates하위에 위치시킨다
from flask import render_template
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)
hello 함수의 url에 접근하면 hello.html을 반환,name인자를 받아 html파일의 매개변수 name에 전달
렌더링 템플릿을 통해 화면을 출력 할 때 html에서는 Jinja2 문법을 사요ㅗㅇ할 수 있다
{% for row in rows %}
<tr>
<td>{{ loop.index }}</td>
<td>{{ row[0] }}</td>
<td>{{ row[1] }}</td>
</tr>
{% endfor %}
{%..%} : for문, if문 등의 제어문을 할당
{{..}} : 변수나 표현식의 결과를 출력
블루 프린트
-> 애플리케이션 등록 시 실행할 작업을 기록해두고 사용하는 청사진
-> url생성 시 화면을 출력하는 함수를 블루프린트와 연결하는 방식
-> 웹애플리케이션의 개체를 미리 요구하지 않고 기능 정의 가능, 유지보수 측면에서 좋다
-> 권장사항임
from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound
simple_page = Blueprint('simple_page', __name__,
template_folder='templates')
@simple_page.route('/', defaults={'page': 'index'})
@simple_page.route('/<page>')
def show(page):
try:
return render_template('pages/%s.html' % page)
except TemplateNotFound:
abort(404)
블루프린트 등록
from flask import Flask
from yourapplication.simple_page import simple_page
app = Flask(__name__)
app.register_blueprint(simple_page)
반응형
댓글