金字塔框架:获取应用绝对网址

5 投票
2 回答
3034 浏览
提问于 2025-04-16 19:33

有没有办法在main()函数中获取Pyramid应用的绝对网址?我想把这个网址放到全局设置里,这样在任何地方(比如模板和JavaScript文件)都能调用到。Pyramid的文档里有一些函数可以帮忙,但它们都需要一个请求对象,并且必须在视图中调用。谢谢。

2 个回答

3

我刚刚获取了我的首页路由的完整路径,在我的例子中是'home':

我把这个设置在我的主模板里,这样我所有的JS调用都可以用它来构建正确的路径,用于ajax调用等等。

    <script type="text/javascript" charset="utf-8">
        <%
            app_url = request.route_url('home').rstrip('/')
        %>
        APP_URL = '${app_url}';
    </script>
4

Pyramid(就像大多数WSGI应用程序一样)可以在任何域名和网址前缀上运行。所以,应用程序本身其实并不知道自己负责哪些网址,除非你特别在代码里告诉它(比如通过INI设置)。

这就是为什么会有request.application_url这个东西……因为每次请求的application_url可能会不同,这取决于有多少不同的域名和网址前缀在把请求转发给你的应用程序。

撰写回答