我在Ubuntu 12.04上運行Django 1.4 w/Python 2.7。Django NoReverseMatch的URL
我有一個網站,我已經添加了一個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文件,並驗證了命名空間是正確的 - 每個人都在我的團隊已經在本地驗證了這一點。
項目urls.py:
urlpatterns = patterns('',
url(r'^common/', include('common.urls', namespace='common')),
)
共同urls.py:
utilitiespatterns = patterns('',
url(r'^$', views.ConversionUploadView.as_view(), name='index'),
)
urlpatterns = patterns('common.views',
url(r'^utilities/$', include(utilitiespatterns, namespace='utilities')),
)
顯然有比我在這裏投入了大量的多個URL路徑。這只是爲了讀者。
在服務器上,我清除了所有的.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'
的問題。任何建議將不勝感激。
我能夠重新啓動服務器,一切正常。如果有人解釋發生了什麼,我會很樂意用解決方案投票給他們。 – Rico