from starlette.templating import Jinja2Templates
from starlette.staticfiles import StaticFiles
from fastapi import FastAPI, Request
import uvicorn
app = FastAPI()
# 정적 문서 경로
app.mount("/static", StaticFiles(directory="static"), name="static")
# 동적 문서 경로 (Jinja2 사용)
templates = Jinja2Templates(directory="templates")
@app.get("/")
@app.get("/hello")
async def emp(request: Request):
return templates.TemplateResponse("hello.html", context={"request": request})
if __name__ == "__main__":
uvicorn.run(app, host="localhost", port="80")
파이썬 FastAPI에서는 정적 문서와 동적 문서를 구분해서 처리한다.
동적 문서의 경우 Jinja2를 사용하여 구현하며, HTML에 중괄호 2개를 겹쳐 ({{}}) 데이터를 삽입할 수 있다.
동적 문서의 경로는 Jinja2Templates(directory='경로') 를 통해 설정한다.
정적 문서의 경우 동적 데이터가 발생하지 않는 일반적인 HTML 페이지이다.
동적 문서 경로와 따로 구분해서 지정해주어야하며
FastAPI 인스턴스에 mount() 함수를 사용해 경로를 지정한다.
인스턴스.mount('/static', StaticFiles(directory='static'), name='static')
'Python' 카테고리의 다른 글
FastAPI에서 응답을 HTML 형식으로 하기 (0) | 2023.01.06 |
---|---|
파이썬 타입 체크 (0) | 2023.01.06 |
파이썬 딕셔너리 (1) | 2023.01.05 |
FastAPI 리다이렉트 / 포워딩 (0) | 2023.01.05 |
html에서 파이썬 변수 사용하기 (0) | 2023.01.05 |