FastHTML 表单与文件上传

普通表单

@rt('/submit')
def post(name: str, email: str):
    return f"hello {name}, mail={email}"

fast_app 会自动把同名字段绑定到函数参数。

文件上传

@rt('/upload', methods=['POST'])
async def upload(file: UploadFile):
    data = await file.read()
    return P(f"got {len(data)} bytes")

注意:上传是 asyncUploadFile 来自 starlette。

CSRF

FastHTML 在 SecretKeyMiddleware 启用时自动加 _csrf 字段到表单。