单个Pyramid实例上的多个域和子域

Jon*_*Ong 14 python sqlalchemy pyramid

我希望在一个Pyramid实例上有多个域和子域.但是,我似乎无法找到任何文件.最后一个问题涉及一个资料很少,没有例子的词汇表.你们有没有任何例子或者可以指导我更好的文档?

Mic*_*kel 24

Pyramid只是一个WSGI应用程序.这意味着它依赖于HTTP_HOST环境密钥(由Host头设置)来确定应用程序的主机.这都是相对的.金字塔对其所能接受的内容没有任何限制,因此世界就是你的牡蛎,你可以将其设置为限制内容到你想要的各个领域.这当然从您的网络服务器配置为提供给您的应用程序的主机开始.

假设您正在使用URL分派,您可能希望设计一些自定义路由谓词来检查request.host您想要的任何值.False从该谓词返回将阻止该路由将请求与该主机匹配.

这是一个很大的主题,因此如果您提供更多细节,它可能会有所帮助.例如,由于Pyramid是相对的,因此您可能希望从"example.com"生成以将某人重定向到"sub.example.com"的任何URL都需要通过预生成器完成.

def pregen(request, elements, kw):
    kw['_app_url'] = 'http://sub.example.com'
    return elements, kw

def req_sub(info, request):
    return request.host.startswith('sub')

config.add_route('sub_only', '/',
                 custom_predicates=(req_sub,),
                 pregenerator=pregen)
config.add_route('foo', '/foo')
config.add_view(view, route_name-'foo')

def view(request):
    # redirect the user to "http://sub.example.com", regardless of whether
    # request.host is "example.com" or "sub.example.com"
    return HTTPFound(request.route_url('sub_only'))
Run Code Online (Sandbox Code Playgroud)

  • 对于这个特殊的设置,我不知道有太多的例子.通常,不同的子域代表不同的WSGI应用程序,并且每个子域都有自己的设置,可能有一些共享.有金字塔食谱的各种例子,但我不知道有任何关于这个. (3认同)