진자템플릿을 활용한 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; }