Python 刷新页面时重复返回的值
我有一个python程序(port.py),它执行一些简单的ETA计算,并将一个值列表返回给Flask(app.py),然后Flask将它们打印到一个基本的html页面(index.html) 我遇到的问题是,当我重新加载页面时,上次计算中的所有现有数据都会保留下来。它确实会更新新时间的计算,但只会在上一次计算之后打印所有时间 我花了一整天的时间试图让它清除以前的计算,并将当前值返回到一个干净的html页面,而不仅仅是简单地重复它 这一切都是可行的,但它只是格式化和得到一个干净的网页,每次你访问该网站,这是摧毁我 这是来自my port.py的代码Python 刷新页面时重复返回的值,python,python-3.x,flask,Python,Python 3.x,Flask,我有一个python程序(port.py),它执行一些简单的ETA计算,并将一个值列表返回给Flask(app.py),然后Flask将它们打印到一个基本的html页面(index.html) 我遇到的问题是,当我重新加载页面时,上次计算中的所有现有数据都会保留下来。它确实会更新新时间的计算,但只会在上一次计算之后打印所有时间 我花了一整天的时间试图让它清除以前的计算,并将当前值返回到一个干净的html页面,而不仅仅是简单地重复它 这一切都是可行的,但它只是格式化和得到一个干净的网页,每次你访问
import datetime
# from tabulate import tabulate
import timedelta
import sqlite3
class Port:
def __init__(self, name, distance, sheet):
self.name = name
self.distance = distance
self.sheet = sheet
portlist.append(self)
def time(self):
i = ((48 - self.distance) / s * 3600)
i = timedelta.Timedelta(seconds=i)
return i
def eta(self):
k = self.time()
# TODO: now needs changing to start time when inputting a start time
k = k + start
return k
def tide(self):
# connect to database
conn = sqlite3.connect('pythonsqlite.db')
conn.row_factory = sqlite3.Row
# create a cursor
c = conn.cursor()
# round the times
r = self.eta()
approx = round(r.minute / 10.) * 10
r = r.replace(minute=0)
r += datetime.timedelta(seconds=approx * 60)
rounded = r.time()
date = r.strftime('%d-%m-%y')
time = rounded.strftime('%H:%M')
# this is where to search the excel/sql file
# TODO change basedata2 for a table depending on the port location
c.execute("SELECT rowid, * FROM basedata2 WHERE Date = '" + date + "'")
f = c.fetchone()
f = f[time]
f = f / 100
conn.commit()
conn.close()
return f
def planned(self):
p = self.eta()
p = p.strftime("%H:%M")
return p
def ukc(self):
u = self.tide() - d
return u
s = 10
d = 5
# d = float(input('Draft: '))
start = datetime.datetime.now()
portlist = []
def createplan():
Port("port1", 48.0, 'Sheet1')
Port("port2", 42.9, 'Sheet1')
Port("port3", 40.1, 'Sheet1')
Port("port4", 38.0, 'Sheet1')
Port("port5", 35.6, 'Sheet1')
Port("port6", 33.4, 'Sheet1')
Port("port7", 31.7, 'Sheet1')
Port("port8", 31.4, 'Sheet1')
Port("port9", 30.7, 'Sheet1')
Port("port10", 27.7, 'Sheet1')
Port("port11", 26.2, 'Sheet1')
Port("port12", 24.7, 'Sheet1')
Port("port13", 22.5, 'Sheet1')
Port("port14", 19.7, 'Sheet1')
Port("port15", 18.4, 'Sheet1')
Port("port16", 11.8, 'Sheet1')
Port("port17", 8.3, 'Sheet1')
Port("port18", 6.3, 'Sheet1')
Port("port19", 0, 'Sheet1')
Port("port20", 5.2, 'Sheet1')
Port("port21", 2.6, 'Sheet1')
Port("port22", 1.7, 'Sheet1')
Port("port23", 0, 'Sheet1')
# def createtable():
# headers = ['Location', 'Time', 'Tide', 'UKC']
# # TODO: rename these
# tablename1 = []
# tablename2 = []
# tablename3 = []
# tablename4 = []
#
# for obj in portlist:
# # print(obj.name, obj.planned(), obj.tide())
# tablename1.append(obj.name)
# tablename2.append(obj.planned())
# tablename3.append(obj.tide())
# tablename4.append(obj.ukc())
#
# table = zip(tablename1, tablename2, tablename3, tablename4)
# print(tabulate(table, headers=headers, tablefmt='github', floatfmt=".2f"))
def printportlist():
createplan()
location = []
planned = []
tidevalue = []
ukc = []
for obj in portlist:
location.append(obj.name)
planned.append(obj.planned())
tidevalue.append(obj.tide())
ukc .append(obj.ukc())
return location, planned, tidevalue, ukc
def main():
# createplan()
# createtable()
printportlist()
if __name__ == "__main__":
main()
这是我的app.py
from flask import Flask, render_template
from flask_moment import Moment
import datetime
import port
app = Flask(__name__)
moment = Moment(app)
@app.route('/')
def index():
return render_template('index.html', current_time=datetime.datetime.utcnow())
@app.route('/user/<name>')
def user(name):
return render_template('user.html', name=name)
@app.route('/port')
def runport():
return render_template('index.html', content=[port.printportlist()])
if __name__ == '__main__':
app.run()
从烧瓶导入烧瓶,渲染\u模板
从零力矩导入力矩
导入日期时间
进口港
app=烧瓶(名称)
力矩=力矩(app)
@应用程序路径(“/”)
def index():
返回呈现模板('index.html',current\u time=datetime.datetime.utcnow())
@app.route(“/user/”)
def用户(名称):
返回呈现模板('user.html',name=name)
@应用程序路径(“/port”)
def runport():
返回呈现模板('index.html',内容=[port.printportlist()])
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run()
下面是我的index.html中的代码
<!doctype html>
<html lang="eng">
<head>
<title>Port Page Testing</title>
</head>
<body>
<h1>Port Page Testing!</h1>
{% for x in content %}
<p>{{ x }}</p>
{% endfor %}
</body>
</html>
端口页测试
端口页测试!
{content%%中x的%s}
{{x}
{%endfor%}
真的非常感谢你的帮助。。我就是搞不懂这个
编辑:包含的所有代码显示生成端口列表的代码。很可能有一个全球名单没有被清除。太好了,戴夫。。。非常感谢。解决了列表不断增加的问题。我现在才意识到,我的port.py不会在每次web刷新时重新加载以重新计算开始时间。。一步一个脚印。。谢谢你的帮助!显示生成端口列表的代码。很可能有一个全球名单没有被清除。太好了,戴夫。。。非常感谢。解决了列表不断增加的问题。我现在才意识到,我的port.py不会在每次web刷新时重新加载以重新计算开始时间。。一步一个脚印。。谢谢你的帮助!