urlconf周りのメモ

カスタム用。urlconfをクラスにしたいときとか。普通は使わない方が良い。

# -*- coding: utf-8 -*-
from django.core import urlresolvers
from django.utils.functional import memoize
from django.utils.importlib import import_module
from django.conf import settings

_resolver_cache = {}
sp = settings.ROOT_URLCONF_CLASS.split('.')
klass = sp[-1]
mod = '.'.join(sp[:-1])
_urlconf_module = import_module(mod)
_urlconf = getattr(_urlconf_module, klass)()

def get_resolver(urlconf):
    return urlresolvers.RegexURLResolver(r'^/', _urlconf)
urlresolvers.get_resolver = memoize(get_resolver, _resolver_cache, 1)

class URLConfMiddleware(object):
    def process_request(self, request):
        request.urlconf = _urlconf