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
'Develop > FastAPI' 카테고리의 다른 글
FastAPI 프로젝트 진행(bootstrap, js 파일 추가) - 76 (0) | 2023.01.25 |
---|---|
FastAPI 프로젝트 진행(CSS 및 static 폴더 구성) - 75 (0) | 2023.01.25 |
FastAPI Alembic 추가 실습하기 - 73 (0) | 2023.01.24 |
FastAPI 테이블 관계 형성하기- 72 (0) | 2023.01.24 |
FastAPI Alembic new 테이블 및 외래키 생성(Upgrade / Downgrade) - 71 (0) | 2023.01.22 |