FastAPI中如何使用HTML表单提交值作为端点路径参数?
问题解答
仅使用HTML与FastAPI完全可以实现需求,注意原生HTML表单的默认提交逻辑不会自动将输入值填充到action属性的路径占位符中,做简单适配即可。
原代码的问题
你当前的写法存在三个不符合HTML表单规则的点:
- action属性里写的
/{namespace}/{project}是静态字符串,提交时不会自动替换占位符 - 两个输入框都没有配置
name属性,提交时表单不会携带这两个输入的值 - GET方法提交表单不需要加
enctype="multipart/form-data"属性,该编码仅用于POST方法上传文件的场景
纯HTML+FastAPI实现方案
不需要引入JS或其他前端依赖,通过FastAPI重定向中转即可实现:
- 修改表单代码,提交到中转端点,给输入框配置对应name属性:
<form action="/goto-project" method="get"> <input type="text" name="namespace" placeholder="输入namespace"> <input type="text" name="project" placeholder="输入project"> <input type="submit" value="获取文件"> </form>
- 在FastAPI中添加中转端点,接收表单提交的查询参数后,重定向到你原有的路径参数接口:
from fastapi.responses import RedirectResponse # 中转接口 @app.get('/goto-project') async def redirect_to_target(namespace: str, project: str): return RedirectResponse(url=f"/{namespace}/{project}") # 你原来的业务接口无需修改 @app.get('/{namespace}/{project}') async def get_project(namespace, project): # 原有通过response返回文件的逻辑 pass
这个方案完全基于HTML原生表单提交规则和FastAPI内置的重定向能力,没有额外依赖。如果不想经过重定向步骤,才需要通过少量JS拦截表单提交事件手动拼接跳转路径,不属于纯HTML的实现范畴。
内容的提问来源于stack exchange,提问作者alipboy
相关产品推荐
相关产品推荐

