Flask技术问题:如何将app.py变量值传递至HTML页面显示
问题原因及修复方案
1. 未将变量传递给模板
当前路由函数的render_template调用未传入prompt和openAIAnswer变量,模板无法获取这些值。同时需要初始化变量,避免GET请求时模板因变量未定义报错。
修改后的路由函数:
@app.route('/product-description', methods=["GET", "POST"]) def productDescription(): # 初始化变量,处理GET请求场景 prompt = "" openAIAnswer = "" if request.method == 'POST': submission = request.form['productDescription'] query = "Write a detailed product description for: {}".format(submission) openAIAnswer = openAIQuery(query) prompt = 'DaVinci Suggestions for {} are: '.format(submission) # 将变量传递给模板 return render_template("product-description.html", prompt=prompt, openAIAnswer=openAIAnswer)
2. 语法错误:query变量末尾的逗号
原代码中query = "...",末尾多了一个逗号,导致query成为元组类型,而OpenAI API的prompt参数需要字符串类型。虽然API返回200,但该语法错误可能引发潜在请求异常,必须移除逗号。
3. 模板空值优化(可选)
为提升用户体验,可在模板中判断变量是否为空,避免显示空白内容:
<div class="p-3 rounded"> <div class="row"> <div class="col-lg-12"> {% if prompt %} <h3 class="text-primary">{{prompt}}</h3> {% endif %} {% if openAIAnswer %} <p class="lead">{{openAIAnswer}}</p> {% endif %} </div> </div> </div>
完成以上修改后,POST请求生成的变量即可正确传递到模板并显示,同时解决了潜在参数类型问题与GET请求的变量未定义报错。
内容的提问来源于stack exchange,提问作者Emeka
相关产品推荐
相关产品推荐

