我希望在一个金字塔实例上有多个域和子域。但是,我似乎找不到任何有关它的文档。最后一个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/