我正在尝试设置一个中间件,该中间件将读取请求中的子域并根据子域提供不同应用程序的 urls.py ......但我遇到了一些不稳定的行为
这是我的中间件:
class SubdomainsMiddleware:
def process_request(self, request):
request.domain = request.META['HTTP_HOST']
request.subdomain = ''
parts = request.domain.split('.')
if len(parts) == 3 or (re.match("^localhost", parts[-1]) and len(parts) == 2):
request.subdomain = parts[0]
request.domain = '.'.join(parts[1:])
# set the right urlconf
if request.subdomain == 'foo':
settings.ROOT_URLCONF = 'bqsite.urls'
else:
settings.ROOT_URLCONF = 'dhsite.urls'
我的理解是,如果这行得通,那么项目的根 urls.py 永远不应该被击中。那是对的吗?我变得非常奇怪和不稳定的行为,如果我重新启动 apache,该站点会显示 django 欢迎屏幕,但在 refrshing 使用正确的 urls 文件之后。