执行以下操作后,当我为自定义模型管理网址调用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
,但它没有用。
需要帮助。
提前致谢。
答案 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)