티스토리 뷰

반응형

Ollama + CrewAI + FastAPI를 활용한 한국 주식 분석 블로그

4. FastAPI 기반 블로그 프론트엔드 개발

이 글에서는 FastAPI를 활용하여 사용자가 웹 브라우저에서 주식 분석 리포트를 조회할 수 있도록 블로그 형태의 프론트엔드를 구현하는 방법을 다룹니다.

FastAPI에서 HTML 템플릿 렌더링하기
Jinja2를 활용한 동적 웹 페이지 구성
CrewAI가 생성한 리포트를 웹에서 표시하기
FastAPI 실행 및 프론트엔드 테스트


4.1 FastAPI에서 HTML 템플릿 렌더링하기

4.1.1 Jinja2 템플릿 엔진 개요

FastAPI는 Jinja2를 활용하여 동적인 HTML 페이지를 렌더링할 수 있습니다.
Jinja2는 Django의 템플릿 엔진과 유사하며, HTML 내에서 Python 데이터를 활용하는 기능을 제공합니다.

4.1.2 Jinja2 설치 및 설정

pip install jinja2

템플릿을 저장할 templates/ 폴더를 생성합니다.

mkdir -p src/stock_analysis/templates

4.2 블로그 메인 페이지 구현

반응형

이제 FastAPI에서 HTML 템플릿을 렌더링하는 API를 생성합니다.
아래 코드를 src/stock_analysis/api.py 파일에 추가합니다.

4.2.1 api.py 수정

from fastapi import FastAPI, HTTPException, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
import os

app = FastAPI()

# Jinja2 템플릿 설정
templates = Jinja2Templates(directory="src/stock_analysis/templates")

REPORT_PATH = "weekly_korean_stock_report.md"

@app.get("/", response_class=HTMLResponse)
def read_root(request: Request):
    """블로그 메인 페이지"""
    if os.path.exists(REPORT_PATH):
        with open(REPORT_PATH, "r", encoding="utf-8") as file:
            report_content = file.read()
    else:
        report_content = "리포트가 아직 생성되지 않았습니다."

    return templates.TemplateResponse("index.html", {"request": request, "report": report_content})

4.3 HTML 템플릿 파일 작성

아래 HTML 코드를 src/stock_analysis/templates/index.html 파일에 저장합니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>한국 주식 분석 블로그</title>
    <style>
        body { font-family: Arial, sans-serif; max-width: 800px; margin: auto; padding: 20px; }
        h1 { color: #2c3e50; }
        pre { background: #f4f4f4; padding: 10px; border-radius: 5px; }
    </style>
</head>
<body>
    <h1>주간 한국 주식 시장 분석</h1>
    <pre>{{ report }}</pre>
</body>
</html>

4.4 FastAPI 실행 및 프론트엔드 확인

4.4.1 FastAPI 실행

uvicorn src.stock_analysis.api:app --host 127.0.0.1 --port 8000 --reload

4.4.2 웹 브라우저에서 확인

브라우저에서 http://127.0.0.1:8000/ 에 접속하면, CrewAI가 생성한 주식 분석 리포트가 표시됩니다.
리포트가 없을 경우 "리포트가 아직 생성되지 않았습니다."라는 메시지가 출력됩니다.


📌 정리 및 다음 단계

이제 FastAPI 기반의 블로그 UI를 구축하여, 사용자가 브라우저에서 CrewAI 리포트를 확인할 수 있도록 설정했습니다.

✅ Jinja2를 활용한 HTML 렌더링 구현
✅ CrewAI가 생성한 리포트를 웹 페이지에서 표시
✅ FastAPI 실행 및 프론트엔드 테스트 완료


🔜 다음 글 예고: 5. 프로젝트 실행 및 배포 방법

다음 글에서는 FastAPI 서버를 배포하고, 한국 주식 분석 블로그를 실제 서비스로 운영하는 방법을 다룹니다.

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함
반응형