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

FastAPI接收Jinja2模板动态生成的不定数量表单输入的方案问询

你可以直接从Request对象中获取完整的表单数据,无需提前硬编码每个动态参数,实现逻辑如下:

修改后的完整Python代码

from fastapi import FastAPI, Request, Form
from fastapi.templating import Jinja2Templates

dct = {"ctp_a": 1,
       "ctp_b": 2,
       "ctp_c": 20}

app = FastAPI()
templates = Jinja2Templates(directory="templates/")

@app.get("/form")
def form_post(request: Request):
    result = dct
    return templates.TemplateResponse('form3.html', context={'request': request, 'result': result})

# 改为异步函数,适配request.form()异步调用规则
@app.post("/form")
async def form_post(request: Request):
    # 一次性拉取所有表单提交内容
    form_data = await request.form()
    form_dict = dict(form_data)
    # 提取固定输入项
    multiply_by = int(form_dict.pop("multiply_by"))
    
    result = {}
    # 自动配对动态输入项的名称和数值
    for key in form_dict:
        if not key.endswith("_nm"):
            item_name = form_dict[f"{key}_nm"]
            item_value = int(form_dict[key])
            result[item_name] = item_value * multiply_by
    
    return templates.TemplateResponse('form3.html', context={'request': request, 'result': result})

说明

原有HTML模板无需做任何修改,该方案可适配任意数量的动态输入项,后续业务增减键值对都不需要调整后端接收逻辑。


内容的提问来源于stack exchange,提问作者Jakub.Novotny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:09:01