Django: sobrescriba ROOT_URLCONF con request.urlconf en middleware

Estoy intentando sobrescribir ROOT_URLCONF con otra url cuando la solicitud contiene el subdominio “api” y esto es lo que tengo hasta ahora.

from django.utils.cache import patch_vary_headers class SubdomainMiddleware: def process_request(self, request): path = request.get_full_path() root_url = path.split('/')[1] domain_parts = request.get_host().split('.') if (len(domain_parts) > 2): subdomain = domain_parts[0] if (subdomain.lower() == 'www'): subdomain = None else: subdomain = None request.subdomain = subdomain request.domain = domain if request.subdomain == "api": request.urlconf = "rest_api_example.urls.api" else: request.urlconf = "rest_api_example.urls. 

Intenté usar el módulo set_urlconf “de django.core.urlresolvers” también pero no funcionó. ¿Me estoy perdiendo de algo?

Curiosamente, utilicé el módulo set_urlconf y request.urlconf para establecer la ruta url y ahora está funcionando.

  from django.core.urlresolvers import set_urlconf if request.subdomain == "api": set_urlconf("rest_api_example.urls.api") request.urlconf = "rest_api_example.urls.api" else: set_urlconf("rest_api_example.urls.default") request.urlconf = "rest_api_example.urls.default" 

En cuanto a muchas cosas en django, ya existe la aplicación para eso – https://github.com/jezdez/django-hosts