# Fastapi
Fastapi + Htmx + Petite-Vue + Jinja2
```html
{% for row in rows %}
{% for p in range(1, total_pages + 1) %}
{% set base_class = "px-3 py-1.5 text-xs font-medium rounded-md border transition-all duration-200" %}
{% set active_class = "bg-blue-600 text-white border-blue-600 shadow-sm hover:bg-blue-700" if p == current_page else "bg-white text-gray-700 border-gray-200 hover:bg-gray-50" %}
{% endfor %}
```
```python
# 🌐 1. 메인 대시보드 뼈대 로드
@app.get("/", response_class=HTMLResponse)
@trace
async def index_page(request: Request, db: Session = Depends(get_session)):
# 📌 최초 메인 진입 시 구글 시트 원본 배열 데이터를 긁어옵니다
raw_data = get_google_sheet_data()
rows = raw_data[1:] if raw_data and len(raw_data) > 1 else []
# 📌 반드시 context 내부에 rows를 동봉하여 index.html로 던져야 include가 정상 동작합니다
return templates.TemplateResponse(
request=request,
name="index.html",
context={
"rows": rows,
},
)
```
```html
본 공간은 인공지능(AI)이 도출한 방대한 지식을 일목요연하게 큐레이션하여 기록하는 블로그입니다. 기술적 한계로 인해 모든 정보의 완벽한 정확성을 보장하기는 어려우므로, 최종적인 판단과 책임은 독자 본인에게 있음을 정중히 안내해 드립니다.
2026년 7월 21일 화요일
# fastapi + htmx + petite-vue + jinja2 - html 은 소스보기로 ...
database.py
import os from contextlib import contextmanager # contextmanager 임포트 from typing import Generator from dotenv...
-
bool atob(const char * string) { if (!strcmp(string, "true")) return true; return false; }
-
/// CXXXView.cpp void CXXXView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the ...
-
WxWidgets: http://www.wxwidgets.org/downloads/ MinGW: http://sourceforge.net/projects/mingw/files/ * Microsoft Windows Environment Var...