我正在使用烧瓶网络服务器并希望执行以下功能。向烧瓶中的HTML发送剧情时发生错误
- 将表单数据从home.html传递到python func plot_perf_metric()。
- 保存表单数据并调用plot.html。
- plot.html调用output_plot(),它根据保存的表单数据并从数据库访问值(mongodb)生成一个图表。
- plot.html打印此图。
我目前没有看到图像显示。
我只收到图像的链接断开。
有人可以帮助我吗?
home.html的
<!DOCTYPE html>
<html lang="en">
<body>
<form action="./plot" method="POST">
<input type="radio" name="perf_metric" value="disk"> Disk <br><br>
<input type="radio" name="perf_metric" value="memory"> Memory <br><br>
<input type="radio" name="perf_metric" value="cpu"> CPU <br><br>
<input type="radio" name="perf_metric" value="egress"> Egress <br><br>
<input type="radio" name="perf_metric" value="flit"> Flit <br><br>
<input type="submit" name="submit_plot" value="Send">
</form>
</body>
</html>
routes.py
from flask import Flask, render_template, send_file
from flask import request,make_response
from pymongo import MongoClient
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
import StringIO
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
import random
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
def connect_mongo(text):
client = MongoClient()
db = client['mydb']
collection = db['vload']
b = list()
a = list(collection.find())
for i in range(len(a)):
b.append(a[i][text])
return b
@app.route('/output')
def output_plot():
fig = Figure()
axis = fig.add_subplot(1, 1, 1)
b=connect_mongo(plot_perf_metric.text)
fig = axis.plot(b)
output = StringIO.StringIO()
response = make_response(output.getvaluest())
response.mimetype = 'image/png'
fig.savefig(output)
output.seek(0)
return send_file(output, mimetype='image/png')
@app.route('/plot',methods=['POST'])
def plot_perf_metric():
if(request.form['submit_plot'] == "Send"):
text = request.form['perf_metric']
return render_template('plot.html')
if __name__ == '__main__':
app.run(debug=True)
plot.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Plot</title>
</head>
<body>
<img src="{{ url_for('output_plot') }}" alt="Image Placeholder" height="100">
</body>
</html>
请问你能否给予充分的taceback? – Nilesh 2015-01-21 12:01:13