如何将带参数的函数封装到Flask蓝图的路由方法中?
首先,先修正你业务方法的小问题:参数列表里input_folder重复了,应该是input_folder和output_folder,正确的方法定义如下:
def extract_and_segmentate(input_folder, output_folder): extract_txt_from_pdf(input_folder, output_folder) extract_txt_from_pptx(input_folder, output_folder) segmentate(output_folder, output_folder, 35)
针对Flask蓝图路由无法直接设置参数的问题,给你三种实用处理方式:
方案1:通过URL查询参数传递(最适合动态传参的GET请求)
GET请求可通过URL查询字符串传递参数,在路由方法里用request.args获取参数值后,再传给业务方法。
代码示例:
from flask import request @extraction.route('/extract', methods=['GET']) def extract_and_segmentate_route(): # 和业务方法名区分开,避免命名冲突 # 从查询参数中获取路径,可添加默认值或参数校验逻辑 input_folder = request.args.get('input_folder') output_folder = request.args.get('output_folder') # 简单校验,防止空参数传入 if not input_folder or not output_folder: return "缺少必要参数:input_folder 和 output_folder", 400 # 调用业务方法 extract_and_segmentate(input_folder, output_folder) return "提取和分段处理完成", 200
前端请求示例:GET /extract?input_folder=/path/to/input&output_folder=/path/to/output
方案2:用Flask配置项固定路径(适合无需动态修改的场景)
如果文件夹路径是固定的,可将路径配置在Flask的config中,业务方法直接读取配置,路由方法无需传参。
代码示例:
from flask import current_app # 在Flask应用初始化时配置路径 app.config['INPUT_FOLDER'] = '/fixed/path/to/input' app.config['OUTPUT_FOLDER'] = '/fixed/path/to/output' # 修改业务方法读取配置 def extract_and_segmentate(): input_folder = current_app.config['INPUT_FOLDER'] output_folder = current_app.config['OUTPUT_FOLDER'] extract_txt_from_pdf(input_folder, output_folder) extract_txt_from_pptx(input_folder, output_folder) segmentate(output_folder, output_folder, 35) # 路由方法 @extraction.route('/extract', methods=['GET']) def extract_and_segmentate_route(): extract_and_segmentate() return "提取和分段处理完成", 200
方案3:通过环境变量传递路径(适合部署时灵活配置)
启动Flask服务前设置环境变量,代码中读取环境变量的值传给业务方法。
代码示例:
import os @extraction.route('/extract', methods=['GET']) def extract_and_segmentate_route(): input_folder = os.getenv('INPUT_FOLDER') output_folder = os.getenv('OUTPUT_FOLDER') if not input_folder or not output_folder: return "环境变量 INPUT_FOLDER 或 OUTPUT_FOLDER 未设置", 400 extract_and_segmentate(input_folder, output_folder) return "提取和分段处理完成", 200
启动时设置环境变量(Linux/Mac):
export INPUT_FOLDER=/path/to/input export OUTPUT_FOLDER=/path/to/output flask run
Windows(命令行):
set INPUT_FOLDER=C:\path\to\input set OUTPUT_FOLDER=C:\path\to\output flask run
内容的提问来源于stack exchange,提问作者Lorenzo Cutrupi
相关产品推荐
相关产品推荐

