custom.html과 같은 사용자 정의 HTML 파일을 FastAPI 앱의 루트 경로로 렌더링하려고 합니다. 그러나 현재 설정으로 인해 기본 index.html이 대신 반환됩니다.
StaticFiles에 대한 Starlette 문서에 설명된 대로:
html - Run in HTML mode. Automatically loads index.html for directories if such file exists.
이 문제를 해결하려면 두 가지 방법이 있습니다. 옵션:
1. StaticFiles를 다른 경로에 마운트:
StaticFiles 인스턴스를 /static과 같은 고유한 경로에 마운트합니다. 이렇게 하면 /static으로 시작하는 모든 경로가 StaticFiles 애플리케이션에서 처리됩니다.
app.mount('/static', StaticFiles(directory='static'), name='static')
2. 엔드포인트 이후 StaticFiles 정의:
그래도 StaticFiles를 루트 경로(/)에 마운트하려면 모든 API 엔드포인트를 선언한 후 StaticFiles 인스턴스를 정의하세요. 이렇게 하면 엔드포인트가 StaticFiles보다 우선순위를 갖게 됩니다.
@app.get('/') async def index(): return FileResponse('static/custom.html')
app.mount('/', StaticFiles(directory='static', html=True), name='static')
html=True 인수를 사용하면 한 줄의 코드로 정적 웹 콘텐츠를 쉽게 제공할 수 있습니다. . 그러나 동적 HTML 파일과 추가 API 엔드포인트가 필요한 경우 템플릿을 사용하고 html=True를 사용하지 않고 StaticFiles를 다른 경로에 마운트하는 것이 좋습니다.
위 내용은 사용자 정의 HTML 파일을 FastAPI 루트 경로로 제공하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!