1

正如标题所说,我遇到了 web.py 的问题。

我有一个启动 web.py 实例并提供基本页面的脚本。使用 web.py 模板系统,我可以让 time.time() 之类的函数在每次重新加载时刷新(意思是,当我刷新时,打印的时间增加了)。但是,我有一个自己编写的函数,它执行一些数学运算并返回一个多行字符串。当从脚本或命令行调用该函数时,它每次返回不同的值,但是,当我使用 web.py 模板系统调用它时,似乎只运行该函数一次,然后不会在其他页面重新加载时再次重新运行它(即使 time.time() 每次都更新)。让它重新运行的唯一方法是重新启动脚本。

这是有问题的功能:

    def casecount():
      curcount = 80
      sc = startcount(date)
      delta = sc - curcount
      pace = float(delta) / float(ElTime(time, "9:00"))
      eta = float(curcount) / float(pace)
      return '''We started with %d cases as of 9AM<br> 
      Remaining cases as of %s: %d<br>
      We\'re working at a pace of %.3f cases per hour. At this rate, we will finish in approximately %.3f hours<br>''' % (sc, time, curcount, pace, eta)

显然,我编写了脚本调用的其他函数,但我知道它在单独运行时可以工作。

我正在使用以下代码提供对 web.py 模板系统的功能访问:

    render = web.template.render('templates/', cache=False, globals={'cc': casecount, 'time': time} )

最后,我用这个调用模板中的代码:

    <html>
    <head>
    </head>
    <body>
    $time()
    $cc()
    </body>
    </html>

有任何想法吗?我已经有一段时间了,搜索谷歌无济于事。

已修复:Welp,我在 redditor 的帮助下修复了它。我的问题是使用全局变量来表示时间。当然,该变量在第一次导入脚本时已正确加载,但随后没有在函数重新加载时更新,因为,为什么应该这样,它超出了范围。

4

0 回答 0