升级到django 1.7后所有管理员网址的NoReverseMatch

时间:2015-07-06 15:11:26

标签: django django-urls

我正在将大型项目从Django 1.6.2升级到最新的1.8版本。

在此处发布所有发行说明:https://docs.djangoproject.com/en/1.8/releases/1.7/#using-a-custom-manager-when-traversing-reverse-relations

我相信我重新访问了我的整个项目以避免向后兼容,但我仍然在任何管理页面的反向网址调用中收到此错误。

from django.core.urlresolvers import reverse
reverse('admin:scanners_scanner_changelist')

NoReverseMatch: Reverse for 'scanners_scanner_changelist' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

这在django 1.6.x上运行得很好

这是非常令人沮丧的,因为这个错误告诉你什么......基本上你必须猜测并尝试什么是错的。你们中的任何人都有一些想法,我可能会遗漏什么,从Django 1.6到1.7的变化可能会导致这种情况?

除管理员更改列表和更改网址外,所有其他网址都可以正常工作。

1 个答案:

答案 0 :(得分:0)

终于弄明白了。 django-adminplus是造成这种情况的原因。

因此,如果您在从Django 1.6.x升级到1.7.x时遇到类似问题,请尝试将django.contrib.admin更改为django.contrib.admin.apps.SimpleAdminConfig,并且不要从主urls.py中删除admin.autodiscover()文件。这样你就可以手动和明确地进行管理员发现,而不是新的隐式方法,如果你在项目中做了一些严重的黑客攻击,可能会给你带来麻烦。

干杯!