Python 刷新页面时重复返回的值

Python 刷新页面时重复返回的值,python,python-3.x,flask,Python,Python 3.x,Flask,我有一个python程序(port.py),它执行一些简单的ETA计算,并将一个值列表返回给Flask(app.py),然后Flask将它们打印到一个基本的html页面(index.html) 我遇到的问题是,当我重新加载页面时,上次计算中的所有现有数据都会保留下来。它确实会更新新时间的计算,但只会在上一次计算之后打印所有时间 我花了一整天的时间试图让它清除以前的计算,并将当前值返回到一个干净的html页面,而不仅仅是简单地重复它 这一切都是可行的,但它只是格式化和得到一个干净的网页,每次你访问

我有一个python程序(port.py),它执行一些简单的ETA计算,并将一个值列表返回给Flask(app.py),然后Flask将它们打印到一个基本的html页面(index.html)

我遇到的问题是,当我重新加载页面时,上次计算中的所有现有数据都会保留下来。它确实会更新新时间的计算,但只会在上一次计算之后打印所有时间

我花了一整天的时间试图让它清除以前的计算,并将当前值返回到一个干净的html页面,而不仅仅是简单地重复它

这一切都是可行的,但它只是格式化和得到一个干净的网页,每次你访问该网站,这是摧毁我

这是来自my 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()
从烧瓶导入烧瓶,渲染\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刷新时重新加载以重新计算开始时间。。一步一个脚印。。谢谢你的帮助!