重新加载后找不到我的自定义模型管理员网址(sys.modules [' urls.py'])

时间:2015-06-30 11:20:09

标签: python django django-models django-admin django-1.4

执行以下操作后,当我为自定义模型管理网址调用reverse时,它给我反向找不到,并在重新加载urls.py之前反向正常工作。

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('/')

我调试了这一点,并在调用admin.site._registry时发现reload(sys.modules[urlconf])为空,因为它会创建新的AdminSite对象。

我尝试在admin.site之前的变量中保留reload(sys.modules[urlconf]),并在重新加载后将其分配回admin.site,但它没有用。

需要帮助。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我遇到了运行Django 1.7的同样问题,这似乎为我解决了这个问题:

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)