본문 바로가기
카테고리 없음

웹 백엔드 - 렌더링 템플릿, 블루 프린트(파이썬 Flask)

by nomfang 2021. 1. 19.
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)
반응형

댓글