我希望在一个金字塔实例上有多个域和子域。但是,我似乎找不到任何有关它的文档。最后一个question引用的词汇表信息很少,没有示例。你们中有人有什么例子吗,或者可以指导我更好地编写文档吗?

最佳答案

金字塔只是一个wsgi应用程序。这意味着它依赖于http_主机环境键(由主机头设置)来确定应用程序的主机。都是相对的。重点是金字塔对它能接受的东西没有限制,因此这个世界就是你的牡蛎,你可以设置它来限制你想要的不同领域的内容。当然,这是从配置Web服务器为应用程序提供源的主机开始的。
假设您使用的是URL调度,那么您可能需要设计一些自定义路由谓词,以检查request.host值是否满足您的需要。从该谓词返回False将阻止该路由将请求匹配到该主机。
这是一个大主题,因此如果您提供更多细节,可能会有所帮助。例如,由于金字塔是相对的,所以您可能需要从'example.com'生成任何URL来将某人重定向到'sub.example.com',这需要通过预生成器完成。

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'))

关于python - 单个Pyramid实例上的多个域和子域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7607807/

10-15 17:34