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)