Pyramid:如何指定应用的基础 URL

2 投票
2 回答
1405 浏览
提问于 2025-04-17 19:03

假设我的应用程序是在域名 www.example.com 上提供服务的。

我应该在哪里在Pyramid的配置文件中指定这个域名,这样像 request.route_url 这样的功能就能自动识别并生成正确的URL呢?

(我觉得 [server:main] 不是放这个的地方)

2 个回答

1

没错,一个合适的反向代理会把正确的头信息转发给你的wsgi服务器。你可以查看pyramid的食谱,里面有关于nginx的具体做法。

4

这些生成网址的函数,比如 route_urlstatic_urlresource_url,都依赖于一个叫 WSGI 的环境字典。这个字典里包含了生成完整网址所需的所有重要参数。

所以,有一种方法是在创建请求的时候,修改这个 WSGI 环境字典,调整里面需要的参数。使用事件来处理这种事情非常合适:

from pyramid.events import NewRequest
from pyramid.events import subscriber

@subscriber(NewRequest)
def mysubscriber(event):
    event.request.environ['HTTP_HOST'] = 'example.com'

这样一来,route_url 就会把 example.com 当作基础网址来使用。

撰写回答