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

swagger-codegen-v3 Python-Flask自定义Mustache模板报错及模板位置咨询

Swagger Codegen V3 自定义模板生成Python-Flask代码报错问题

问题背景

  • 数据源:已验证的Pet Store示例精简版YAML文件
  • 自定义模板来源:从swagger-codegen主分支下载flaskConnexion目录下的所有Mustache文件(v3.0.0分支未找到对应文件)
  • 执行生成命令:
    docker run --rm -v $(pwd):/local swaggerapi/swagger-codegen-cli-v3 generate -i /local/openapi.yaml -l python-flask -o /local/out/python -t /local/custom_templates/
    
  • 执行后出现语法报错,错误信息如下:
    Exception in thread "Thread-1" java.lang.RuntimeException: Could not generate model 'Address'
        at io.swagger.codegen.v3.DefaultGenerator.generateModels(DefaultGenerator.java:457)
        at io.swagger.codegen.v3.DefaultGenerator.generate(DefaultGenerator.java:788)
        at io.swagger.codegen.v3.cli.cmd.Generate.run(Generate.java:388)
        at java.lang.Thread.run(Thread.java:748)
    Caused by: com.github.jknack.handlebars.HandlebarsException: local/custom_templates/model.mustache:25:29: found: '-last', expected: 'no viable alternative at input '{{^-last''
        {{name}} = {{{value}}}{{^-last}}
    

核心疑问

  1. Python-Flask对应的正确Mustache文件位置在哪里?
  2. 如何解决上述语法报错?

解决方案

1. 正确的Mustache文件位置

swagger-codegen-v3中,python-flask生成器对应的官方模板路径是主分支下的modules/swagger-codegen/src/main/resources/python-flask目录。你之前下载的flaskConnexion目录是针对Connexion框架的专属模板,和python-flask生成器不兼容,这是导致问题的关键原因。

2. 语法报错解决方法

报错里的{{^-last}}属于swagger-codegen较新版本引入的Handlebars局部语法,而你使用的swaggerapi/swagger-codegen-cli-v3镜像版本(v3.x系列)不支持该语法。解决步骤:

  • 替换模板资源:从主分支的python-flask目录下载所有Mustache文件替换当前的自定义模板,该目录下的模板与python-flask生成器完全匹配,不会出现语法兼容问题
  • 若需使用Connexion模板:需切换生成器为-l flask(而非python-flask),同时确保下载对应flaskConnexion目录的模板,且使用支持该语法的swagger-codegen版本

内容的提问来源于stack exchange,提问作者Estuardolh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 12:51:35