Python Flask引擎中的动态子域名
a.example.com
b.example.com
我想在Flask中使用同一个应用文件夹,但配置文件不同。
我找到了以下解决方案,但该怎么用呢?
创建一个上下文处理器,把'request.host'注入到你的模板中,然后根据这个值进行分支处理。
如果想要更多的控制,你可以创建一个网站对象,这个对象是从当前请求中实例化的,并为它添加一些属性,比如:
class Site(object):
def __init__(self, request):
self.host = request.host
@cached_property
def google_analytics_id(self, default=''):
if self.host == 'python.example.com':
return <something>
elif self.host == 'apple.example.com':
return <something else>
return default
然后在你的上下文处理器中使用site = Site(request),在模板中引用site。其他可能的属性包括HTML的元描述、关键词、网站标题等等。当然,这种分支处理只能在能够访问请求对象的应用部分进行。
保罗
1 个回答
1
看看Flask的文档吧,里面讲得很简单,如何通过应用工厂和应用调度来实现域名处理功能。这些内容在“Flask的模式”部分有详细说明: