2

使用 webpy,引用 web.template.render() 的模板目录的正确方法是什么,以便它在 webpy 开发 Web 服务器和 Apache 上都可以工作?

以下代码使用开发服务器工作,但在我的 Apache 服务器上运行时不起作用。

import web

urls = (
  '/', 'index',
  )

class index:
  def GET(self):
    render = web.template.render('templates/')
    return render.index(self)

我知道问题就是web.template.render('templates/')问题所在,因为当 Apache 从C:\Program Files\Apache Software Foundation\Apache2.2. 我的模板目录在我的项目文件夹中。

我不想做的是使用绝对路径,因为我希望能够移动我的项目文件,而不必修改代码以使其保持工作。

4

1 回答 1

6

如果您使用 mod_wsgi,最简单的解决方案是适当地设置 home=选项

或者,您可以获取模块的路径并将其与模板结合,即

os.path.join(os.path.dirname(__file__), 'templates/')

如果您经常需要它,请将其放入函数中。请注意,如果您将其放在单独的模块中,则该模块需要与模板目录位于同一文件夹中,否则您将再次进入错误的目录。

如果你想把它放在系统范围的包中,你可以很容易地找到调用者目录:

def abspath(path): 
    frame = sys._getframe(1)
    base = os.path.dirname(frame.f_globals['__file__'])
    return os.path.join(base, path)
于 2010-09-13T06:36:16.240 回答