fastapi: static目录下静态文件有时能访问,有时访问出错(返回当前页面)
一,现象:
在 FastAPI 的父子应用(Sub-apps)架构中,静态文件的挂载位置、路由匹配机制以及模板中的
url_for 调用方式,都会直接导致静态文件出现“有时生效、有时不生效”或者彻底失效的现象。例子:
我的项目是一个父应用,有两个子应用admin和api,
static的配置是在子应用admin的main.py中,如下:
static的配置是在子应用admin的main.py中,如下:
admin_app.mount("/static", StaticFiles(directory="app/static"), name="static")
二,解决:
在多子应用架构中,将静态文件分散在各个子应用中很容易引发路径混乱。最推荐的做法是将静态文件统一挂载在父应用上:
在父应用的 main.py 中统一挂载静态文件:
# 父应用 main.py
app.mount("/static", StaticFiles(directory="static"), name="static")
app.mount("/admin", admin_app)
app.mount("/api", api_app)
浙公网安备 33010602011771号