Flask 在显示输出之前显示输出 html 标题
Flask displays the output html heading before the output is displayed
我在 selection 之后创建了一个用户输入表单,其中显示了一个图表,图表结果的标题我命名为 'Results' 但结果标题甚至在用户之前显示select离子
这是图片
我还没有 select编辑任何东西。一旦我 select 从下拉列表中显示如下
显示完整图表
我不希望在下拉列表之前显示标题结果 selection
我该怎么办?
这是我的 html 代码片段
{% if result != None %}
<div>
<h2 style="color: #105583;"><a class="article-title">Results</a></h2>
<img src="data:image/png;base64,{{ result }}"\>
</div>
{% elif result == None %}
<div>
<h2 style="color: #105583;">
<a class="article-title">Your results will be displayed here</a></h2>
</div>
{% endif %}
这是我在 html 文件中写的,如果你们都需要显示任何其他代码,我将相应地编辑 post
这是路线
@app.route('/DailyStats', methods=['GET','POST'])
def DailyStats():
if request.method=='POST':
timelineSelect = request.form['selectedTimeline']
dateSelect = request.form['selectedDate']
if(timelineSelect=='Daily'):
import datetime
idx=get_date.index(dateSelect)
df['d'] = pd.to_datetime(df['date_time'], format='(%Y,%m,%d,%H,%M,%S)')
day1 = df['d'].dt.date[idx]
df1 = df[df['d'].dt.date.eq(day1)]
df1 = df1.melt(['date_time','d'])
df1 = df1[df1['value'].eq('Y')]
d = df1.groupby('variable')['date_time'].apply(list).to_dict()
d = {k: [x.time() for x in v] for k, v in d.items()}
xpoints=[]
ypoints=[]
for x in d:
for y in d[x]:
xpoints.append(y)
ypoints.append(x)
x_dt = [datetime.datetime.combine(datetime.date.today(), t) for t in xpoints]
fig, ax = plt.subplots()
plt.plot([],[],)
ax.scatter(x_dt,ypoints, marker='_')
ax.set_title('Usage % of Hardware on '+ dateSelect)
plt.yticks(size=5, fontsize=10)
plt.xticks(rotation=85,fontsize=10)
plt.xlabel('Time')
plt.ylabel('Apps')
plt.tick_params(axis="y",length=5, color="red")
plt.grid(color='gray', linestyle='-', linewidth=0.5)
plt.tight_layout()
myFmt = mdates.DateFormatter("%H")
ax.xaxis.set_major_formatter(myFmt)
print(myFmt)
print(ax.xaxis.set_major_formatter(myFmt))
## Rotate date labels automatically
fig.autofmt_xdate()
from io import BytesIO
fig = BytesIO()
plt.savefig(fig, format='png')
fig.seek(0)
import base64
figdata_png = base64.b64encode(fig.getvalue())
return render_template('datasetDisplay.html', result=figdata_png.decode('utf8'))
好的,所以我想当您第一次加载页面时,它会跳过所有逻辑(因为它只是“POST”)并直接进入 render_template
。它如何获得 figdata_png
以放入变量对我来说是个谜,但它似乎在那里放置了一些东西。因此,您的解决方案可能是
if request.method == "POST":
(your code)
result = figdata_png.decode("utf-8")
elif request.method == "GET":
result = None
return render_template(..., result=result)
我在 selection 之后创建了一个用户输入表单,其中显示了一个图表,图表结果的标题我命名为 'Results' 但结果标题甚至在用户之前显示select离子
这是图片
我还没有 select编辑任何东西。一旦我 select 从下拉列表中显示如下
显示完整图表
我不希望在下拉列表之前显示标题结果 selection 我该怎么办?
这是我的 html 代码片段
{% if result != None %}
<div>
<h2 style="color: #105583;"><a class="article-title">Results</a></h2>
<img src="data:image/png;base64,{{ result }}"\>
</div>
{% elif result == None %}
<div>
<h2 style="color: #105583;">
<a class="article-title">Your results will be displayed here</a></h2>
</div>
{% endif %}
这是我在 html 文件中写的,如果你们都需要显示任何其他代码,我将相应地编辑 post
这是路线
@app.route('/DailyStats', methods=['GET','POST'])
def DailyStats():
if request.method=='POST':
timelineSelect = request.form['selectedTimeline']
dateSelect = request.form['selectedDate']
if(timelineSelect=='Daily'):
import datetime
idx=get_date.index(dateSelect)
df['d'] = pd.to_datetime(df['date_time'], format='(%Y,%m,%d,%H,%M,%S)')
day1 = df['d'].dt.date[idx]
df1 = df[df['d'].dt.date.eq(day1)]
df1 = df1.melt(['date_time','d'])
df1 = df1[df1['value'].eq('Y')]
d = df1.groupby('variable')['date_time'].apply(list).to_dict()
d = {k: [x.time() for x in v] for k, v in d.items()}
xpoints=[]
ypoints=[]
for x in d:
for y in d[x]:
xpoints.append(y)
ypoints.append(x)
x_dt = [datetime.datetime.combine(datetime.date.today(), t) for t in xpoints]
fig, ax = plt.subplots()
plt.plot([],[],)
ax.scatter(x_dt,ypoints, marker='_')
ax.set_title('Usage % of Hardware on '+ dateSelect)
plt.yticks(size=5, fontsize=10)
plt.xticks(rotation=85,fontsize=10)
plt.xlabel('Time')
plt.ylabel('Apps')
plt.tick_params(axis="y",length=5, color="red")
plt.grid(color='gray', linestyle='-', linewidth=0.5)
plt.tight_layout()
myFmt = mdates.DateFormatter("%H")
ax.xaxis.set_major_formatter(myFmt)
print(myFmt)
print(ax.xaxis.set_major_formatter(myFmt))
## Rotate date labels automatically
fig.autofmt_xdate()
from io import BytesIO
fig = BytesIO()
plt.savefig(fig, format='png')
fig.seek(0)
import base64
figdata_png = base64.b64encode(fig.getvalue())
return render_template('datasetDisplay.html', result=figdata_png.decode('utf8'))
好的,所以我想当您第一次加载页面时,它会跳过所有逻辑(因为它只是“POST”)并直接进入 render_template
。它如何获得 figdata_png
以放入变量对我来说是个谜,但它似乎在那里放置了一些东西。因此,您的解决方案可能是
if request.method == "POST":
(your code)
result = figdata_png.decode("utf-8")
elif request.method == "GET":
result = None
return render_template(..., result=result)