Python Flask引擎中的动态子域名

0 投票
1 回答
2125 浏览
提问于 2025-04-16 14:58

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的模式”部分有详细说明:

http://flask.pocoo.org/docs/patterns/appdispatch/

http://flask.pocoo.org/docs/patterns/appfactories/

撰写回答