개발로 자기계발
article thumbnail
728x90

프로젝트 디렉터리 구조

fastapi
todoapp
main.py

database.py

models.py

todos.db
templates routers
home.html auth.py

todos.py

 

템플릿 디렉터리 가져오기, HTML 파일 렌더링

 

1. todoapp 디렉터리 하위에 templates 디렉터리 생성

2. templates 디렉터리 하위에 home.html 생성

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>FastAPI</title>
</head>
<body>
	<h1>Welcome to this FastAPI course!</h1>
</body>
</html>

 

 

 

3. 라이브러리 설치

aiofiles
File Input/Output를 비동기로 할 수 있는 라이브러리
jinja2
python에서 가장 많이 사용되는 템플릿 엔진
※템플릿 엔진
- 파이썬 문법(조건, 반복문, 변수)을 간략한 표현으로 데이터를 가공하여 웹페이지에 보임
- 서버에서 받아온 데이터를 보여줄 중간 매체
- 재사용성 용이, 유지보수 용이, 코드 간결성
pip install aiofiles

pip install jinja2

 

 

4. todos.py 수정 및 추가

import sys
sys.path.append("..")
from fastapi import Depends, HTTPException, APIRouter, Request
import models
from database import engine, SessionLocal

from fastapi.responses import HTMLResponse
#템플릿 엔진 삽입
from fastapi.templating import Jinja2Templates


router = APIRouter(
    prefix="/todos",
    tags=['todos'],
    responses={404: {"description": "Not found"}}
)

models.Base.metadata.create_all(bind=engine)

#템플릿 변수에 templates 디렉터리 추가
templates = Jinja2Templates(directory="templates")


def get_db():
    try:
        db = SessionLocal()
        yield db
    finally:
        db.close()

#templates 디렉터리의 home.html 호출
@router.get("/test")
async def test(request: Request):
    return templates.TemplateResponse("home.html", {"request":request})

 

 

5. test URL로 웹 접속

http://127.0.0.1:8000/todos/test

 

728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)