After doing following when I call reverse for my custom model admin url its giving me Reverse not found and before reloading urls.py reverse working fine.
def _reset_urls(self, urlconf_modules):
"""Reset `urls.py` for a set of Django apps."""
for urlconf in urlconf_modules:
if urlconf in sys.modules:
reload(sys.modules[urlconf])
clear_url_caches()
resolve('/')
I debugged this and find out that admin.site._registry
is empty when I call reload(sys.modules[urlconf])
because it creates new AdminSite object.
I tried preserving admin.site
in a variable before reload(sys.modules[urlconf])
and assigning it back to admin.site
after reload but it didn't work.
Need help.
Thanks in advance.
I was running into the same issue running Django 1.7, this seems to fix it for me:
import sys
from importlib import reload # Python 3
from django.conf import settings
from django.core.urlresolvers import clear_url_caches
from django.utils.importlib import import_module
def reload_urlconf(urlconf=None):
clear_url_caches()
if urlconf is None:
urlconf = settings.ROOT_URLCONF
if urlconf in sys.modules:
reload(sys.modules[urlconf])
import_module(urlconf)