Python 刷新时,烧瓶将页面内容翻倍

Python 刷新时,烧瓶将页面内容翻倍,python,flask,Python,Flask,我有一个简单的Flask脚本,它加载一个Pandas文件(在另一个.py文件中创建)并显示它。 它展示了一切,我想要。。。但我一刷新页面,就会添加相同的内容 这是烧瓶的东西: from flask import Flask,render_template import Python_script import pandas as pd app = Flask(__name__) @app.route("/") def home(): a = Python_scrip

我有一个简单的Flask脚本,它加载一个Pandas文件(在另一个.py文件中创建)并显示它。 它展示了一切,我想要。。。但我一刷新页面,就会添加相同的内容

这是烧瓶的东西:

from flask import Flask,render_template
import Python_script
import pandas as pd

app = Flask(__name__)
@app.route("/")
def home():
    a = Python_script.summary()
    df=pd.DataFrame(a)
    return render_template('simple.html',  tables=[df.to_html(classes='overview')], header='true')


if __name__ == "__main__":
    app.run(debug=True)
Python_script.summary返回一个列表

下面是html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<style>
</style>
</head>
<body>

{% for table in tables %}
            
            {{ table|safe }}
{% endfor %}
</body>
</html>

标题
{对于表%%中的表,%}
{{表|安全}}
{%endfor%}
刷新时需要做什么,它不会添加,而只是更新页面

非常感谢,,
Peter

如果我从您的评论中理解正确,那么您的
Python\u脚本看起来像:

e = []
def summary():
    a = 2
    e.append(a)
    return e

如果是这样,那么你就有问题了
e
是一个全局变量,所以无论何时调用summary()方法,它都会向其中添加更多值。烧瓶代码看起来不错。您需要更改
摘要
的逻辑,以便不扩展数据。

如果我从您的评论中理解正确,您的
Python\u脚本
如下所示:

e = []
def summary():
    a = 2
    e.append(a)
    return e

如果是这样,那么你就有问题了
e
是一个全局变量,所以无论何时调用summary()方法,它都会向其中添加更多值。烧瓶代码看起来不错。您需要更改
summary
的逻辑,以便不扩展数据。

根据您的评论,如果这是
Python\u script.py
的内容:

e=[]
def summary():
    a = 2
    e.append(a)
    return e
然后将调试行添加到烧瓶路由:

import Python_script
@app.route("/")
def home():
     a = Python_script.summary()
     print(Python_script.e)

     # ...
您将看到
Python\u script.e
是一个全局变量,
2
在后续请求中被附加到该列表中

一个快速解决方法是移动指定行,使Flask应用程序中的
成为一个
全局

import Python_script
a = Python_script.summary()

@app.route("/")
def home():
     print(Python_script.e)

     # ...
现在,后续请求不会将
2
追加到列表中。通过这样做,
在服务器进程启动时,而不是在处理请求时,分配一个
,因为该行已从Flask路由移出,并移动到全局级别


如果您正试图实现一种实时维护此列表的方法,那么全局变量不是解决方法,这是另一个存储后端的工作。

根据您的评论,如果这是Python\u script.py的内容

e=[]
def summary():
    a = 2
    e.append(a)
    return e
然后将调试行添加到烧瓶路由:

import Python_script
@app.route("/")
def home():
     a = Python_script.summary()
     print(Python_script.e)

     # ...
您将看到
Python\u script.e
是一个全局变量,
2
在后续请求中被附加到该列表中

一个快速解决方法是移动指定行,使Flask应用程序中的
成为一个
全局

import Python_script
a = Python_script.summary()

@app.route("/")
def home():
     print(Python_script.e)

     # ...
现在,后续请求不会将
2
追加到列表中。通过这样做,
在服务器进程启动时,而不是在处理请求时,分配一个
,因为该行已从Flask路由移出,并移动到全局级别


如果您试图实现一种实时维护此列表的方法,那么全局变量就不是解决方法,这是另一个存储后端的工作。

从您在问题中提供的代码中,我看不出为什么会发生这种情况。问题可能存在于您的
Python\u script.summary()方法中。如果您将(a)
打印到该行之后,服务器控制台是否会在后续请求中显示此“添加数据”?尝试了几种方法,但没有任何变化,它会继续添加。。。如果我将这个“e=[]def summaryl():a=2 e.append(a)return e”作为python脚本,它将继续添加。从您在问题中提供的代码中,我不知道我做错了什么,我不明白为什么会发生这种情况。问题可能存在于您的
Python\u script.summary()方法中。如果您将(a)
打印到该行之后,服务器控制台是否会在后续请求中显示此“添加数据”?尝试了几种方法,但没有任何变化,它会继续添加。。。如果我将这个“e=[]def summaryl():a=2 e.append(a)return e”作为python脚本,它将继续添加。我不知道我做错了什么