FastAPI.2 Jinja2Templates

BodeulMaNN·2022년 12월 9일
0

FastAPI

목록 보기
2/8

Jinja2Templates

진자템플릿을 활용한 html연동

from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates

app = FastAPI()

app.mount("/static", StaticFiles(directory="static"), name="static")


templates = Jinja2Templates(directory="templates")


@app.get("/items/{id}", response_class=HTMLResponse)
async def read_item(request: Request, id: str):
    return templates.TemplateResponse("item.html", {"request": request, "id": id})

templates/item.html ; with에서 템플릿 작성 가능
html 예시

<html>
<head>
    <title>Item Details</title>
    <link href="{{ url_for('static', path='/styles.css') }}" rel="stylesheet">
</head>
<body>
    <h1>Item ID: {{ id }}</h1>
</body>
</html>

전달한 id "컨텍스트"에서 가져온 내용 표시됨 .dict

{"request": request, "id": id}

url_for() 및 템플릿 내부에서도 사용할 수 있으며, 예를 들어 StaticFiles 장착한 상태로 사용 가능

<html>
<head>
    <title>Item Details</title>
    <link href="{{ url_for('static', path='/styles.css') }}" rel="stylesheet">
</head>
<body>
    <h1>Item ID: {{ id }}</h1>
</body>
</html>

이 예시에서는 다음을 사용하여 CSS파일에 연결 statac/styles.css.

h1 { color: green; }
profile
반갑습니다

0개의 댓글