0

我是 web.py 的新手,并且在我的代码中使用了很多硬编码的 url 用于hrefin tag a,like
/login/?type=example.

问题是,
当我将我的应用程序设置在某个路径下运行时,而不是 URL 的根目录下,比如
http://example.com/appname/

该链接将引导我到某个地方,例如
http://example.com/login

虽然预期/想要的是
http://example.com/appname/login

我该如何处理?

4

1 回答 1

3

使 web.ctx.homepath 在您的模板全局变量中可用,并在您的路径之前输出它。

来自http://webpy.org/cookbook/ctx

homepath – 用户请求的从当前应用程序中删除的路径部分。即 homepath + path = 用户在 HTTP 中实际请求的路径。例如 /admin 这似乎是在启动期间从环境变量 REAL_SCRIPT_NAME 派生的。它会影响 web.url() 将在提供的 url 之前添加的内容。这反过来会影响 web.seeother() 的去向,这可能会与您的 url 重写方案(例如 mod_rewrite)产生不良交互

template_globals = {
    'app_path': lambda p: web.ctx.homepath + p,
}

render = template.render(my_template_dir, globals=template_globals, base="mylayout")

然后你应该能够在你的模板中输出 app_path

<a href="$app_path('/login')">Login</a>
于 2013-02-04T06:44:45.550 回答