Python 刷新时,烧瓶将页面内容翻倍
我有一个简单的Flask脚本,它加载一个Pandas文件(在另一个.py文件中创建)并显示它。 它展示了一切,我想要。。。但我一刷新页面,就会添加相同的内容 这是烧瓶的东西: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
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脚本,它将继续添加。我不知道我做错了什么