본문 바로가기

FastAPI tips5

Jinja2 템플릿 활용 1) style.css 파일 적용from fastapi.staticfiles import StaticFilesfrom fastapi import FastAPIapp = FastAPI()app.mount("/static", StaticFiles(directory="static"), name="static")FastAPI가 초기화된 위치를 기준으로 /static 폴더의 경로를 설정한다.html 코드 내에서 아래와 같이 호출이 가능하다. 2) Jinja2Template 예제from pathlib import Pathfrom fastapi.templating import Jinja2Templatesfrom fastapi.responses import HTMLResponsefrom fastapi import AP.. 2024. 5. 8.
Excel 다운로드 API from fastapi import FastAPI, Request, HTTPExceptionapp = FastAPI()'''엑셀 파일 생성'''from fastapi.responses import StreamingResponseimport pandas as pdimport openpyxlfrom datetime import datetimefrom io import BytesIOasync def make_excel_file(cols: list, rows: list) -> StreamingResponse: buffer = BytesIO() df = pd.DataFrame(data=[rows], columns=cols) file_name = f"example_{datetime.now().dat.. 2024. 5. 8.
Middleware 커스텀해서 사용하기 from fastapi import FastAPIfrom middlewares import CustomMiddlewareapp = FastAPI()app.add_middleware(CustomMiddleware) # 미들웨어 추가middlewares.pyfrom starlette.types import ASGIApp, Receive, Scope, Sendclass CustomMiddleware: def __init__(self, app: ASGIApp) -> None: self.app = app async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: # do something await.. 2024. 5. 3.
UploadFile, 이미지 form-data 이미지 등의 파일을 업로드할 때는 form-data로 데이터를 받습니다."file": { "filename": "test.jpg", "file": { "_file": {}, "_max_size": 1048576, "_rolled": false, "_TemporaryFileArgs": { "mode": "w+b", "buffering": -1, "suffix": null, "prefix": null, "encoding": null, "newline": null, "dir": null, "er.. 2024. 3. 28.