python - 刷新页面时烧瓶网站重复返回值
问题描述
我有一个 python 程序 (port.py),它执行一些简单的 ETA 计算并将值列表返回给 Flask (app.py),然后将它们打印到基本的 html 页面 (index.html)
我遇到的问题是,当我重新加载页面时,上次计算中的所有现有数据仍然存在。它确实更新了新时间的计算,但它只是在前一个之后打印出来。
我花了一整天的时间试图让它清除以前的计算并将当前值返回到一个干净的 html 页面,而不仅仅是简单地重复它。
这一切都有效,但它只是格式化并在您每次访问正在摧毁我的网站时获得一个干净的网页。
这是我的 port.py 中的代码
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()
这是我的 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>
真的很感激任何帮助..我似乎无法弄清楚这一点。
编辑:包括所有代码
解决方案
推荐阅读
- python - 如何将多个特征组合到 KMeans 中
- c++ - 中止(核心转储)从 C++ 中的向量中删除元素
- beautifulsoup - 更改班级会阻止查找
- python - 仅当列的 dtype 为数字时,如何使用 pandas 删除尾随零?
- javascript - 如何使用 jwt 在 React 中正确存储当前用户信息
- shell - 在 shell 脚本中的 if 语句中使用 && 运算符
- javascript - grpc/javascript 中的 SBE 协议支持
- python-sphinx - genindex 和 modindex 页脚链接在 readthedocs.io 中不起作用
- angular-oauth2-oidc - angular-oauth2-oidc :启用静默刷新会在 10 分钟后触发许多调用来获取令牌
- linux - bash 或 zsh 中的 subshell 和 detach 之间的区别?