URL上的Django NoReverseMatch

时间:2014-04-23 18:31:19

标签: python django namespaces url-routing

我在Ubuntu 12.04上运行Django 1.4 w / Python 2.7。

我有一个网站,我添加了一个URL命名空间,并通过模板{% url common:utilities:index %}访问它。一切都在当地很好。我有一个失败的登台服务器(好东西,我有一个登台服务器:))。

Django调试出错:

Exception Type: NoReverseMatch
Exception Value: u'utilities' is not a registered namespace inside 'common'

<a href="{% url common:utilities:index %}" class="responsive-tooltip" data-placement="right" title="Utilities">

我已经仔细检查了所有urls.py文件并验证了命名空间是否正确 - 我的团队中的每个人都在本地验证了这一点。

project urls.py:

urlpatterns = patterns('',
    url(r'^common/', include('common.urls', namespace='common')),
)

common urls.py:

utilitiespatterns = patterns('',
    url(r'^$', views.ConversionUploadView.as_view(), name='index'),
)

urlpatterns = patterns('common.views',
    url(r'^utilities/$', include(utilitiespatterns, namespace='utilities')),
)

显然,网址路线比我放在这里的要多得多。这只是为了读者的利益。

在服务器上我清除了所有的.pyc文件。我重新启动了nginx。我已清除浏览器缓存并以隐身模式打开。

在所有失败后,我实际进入服务器shell并使用urlresolvers来验证命名空间。

In [1]: from django.core import urlresolvers as u

In [2]: u.reverse('common:utilities:index')
Out[2]: '/common/utilities/'

我当时认为这可能是unicode字符u'utilities'的问题。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

好像你没有在服务器上重启uwsgi进程。