Flask运行自定义午餐费用分摊代码报错,请求问题排查
问题分析与修复方案
你的代码存在几个核心问题,导致无法作为Flask Web应用运行:
@app.route("/")装饰器没有绑定对应的视图函数,Flask要求路由必须关联一个处理请求的函数- 直接使用命令行的
input()和print(),这是终端程序的交互方式,Web应用需要通过网页表单实现用户交互 - 缺少Flask应用的启动入口代码
以下是修复后的完整代码,实现网页版的午餐费用计算功能:
# app.py from flask import Flask, render_template_string, request app = Flask(__name__) # 定义HTML模板,包含表单和结果展示 HTML_TEMPLATE = """ <!DOCTYPE html> <html> <head> <title>午餐费用计算器</title> <style> body { font-family: Arial, sans-serif; max-width: 600px; margin: 2rem auto; padding: 0 1rem; } .container { padding: 2rem; border: 1px solid #ddd; border-radius: 8px; } input { margin: 0.5rem 0; padding: 0.5rem; width: 100%; box-sizing: border-box; } button { padding: 0.7rem 1.5rem; background: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer; } .result { margin-top: 1.5rem; padding: 1rem; background: #f8f9fa; border-radius: 4px; } </style> </head> <body> <div class="container"> <h1>欢迎使用午餐费用计算器</h1> <form method="POST"> <label>总账单金额(RM):</label> <input type="number" step="0.01" name="bill" required> <label>服务税率(%):</label> <input type="number" name="tax" required> <label>分摊人数:</label> <input type="number" name="people" min="1" required> <button type="submit">计算</button> </form> {% if final_amount %} <div class="result"> <p>每人需支付:RM{{ final_amount }}</p> </div> {% endif %} </div> </body> </html> """ @app.route("/", methods=["GET", "POST"]) def calculate_lunch(): final_amount = None if request.method == "POST": # 获取表单提交的数据 bill = float(request.form.get("bill")) tax = int(request.form.get("tax")) people = int(request.form.get("people")) # 计算逻辑 total_tax_amount = (bill * tax) / 100 total_bill = bill + total_tax_amount bill_per_person = total_bill / people final_amount = round(bill_per_person, 2) # 渲染HTML模板并传递结果 return render_template_string(HTML_TEMPLATE, final_amount=final_amount) # 启动Flask应用 if __name__ == "__main__": app.run(debug=True)
运行步骤:
- 确保已安装Flask:在终端执行
pip install flask - 保存上述代码为
app.py - 在终端运行:
python app.py - 打开浏览器访问
http://localhost:5000即可使用
部署建议(分享给朋友):
- 可以使用PythonAnywhere、Heroku等平台免费部署Flask应用,按照平台指引上传代码并配置启动命令即可
- 部署时记得关闭
debug=True,改为app.run()或者按照平台要求配置启动方式
内容的提问来源于stack exchange,提问作者Shen
相关产品推荐
相关产品推荐

