You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI中如何使用HTML表单提交值作为端点路径参数?

问题解答

仅使用HTML与FastAPI完全可以实现需求,注意原生HTML表单的默认提交逻辑不会自动将输入值填充到action属性的路径占位符中,做简单适配即可。

原代码的问题

你当前的写法存在三个不符合HTML表单规则的点:

  • action属性里写的/{namespace}/{project}是静态字符串,提交时不会自动替换占位符
  • 两个输入框都没有配置name属性,提交时表单不会携带这两个输入的值
  • GET方法提交表单不需要加enctype="multipart/form-data"属性,该编码仅用于POST方法上传文件的场景

纯HTML+FastAPI实现方案

不需要引入JS或其他前端依赖,通过FastAPI重定向中转即可实现:

  1. 修改表单代码,提交到中转端点,给输入框配置对应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>
  1. 在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:06:28