2014-10-03 55 views
0

我得到一個noReverseMatch錯誤在我剛從別人拉的Django應用程序。確切的錯誤是NoReverseMatch在Django中,但它有一個名稱url模式

NoReverseMatch at /dataupload/ 
Reverse for ''upload'' with arguments '()' and keyword arguments '{}' not found. 

'dataupload'是一個應用程序。主urls.py包含

urlpatterns = patterns('', 
    url(r'^dataupload/', include('dataupload.urls')), 
    url(r'^admin/', include(admin.site.urls)) 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

的dataupload模塊在PYTHONPATH和from dataupload import urls作品在Django的殼。該dataupload urls.py具有以下(留下一些東西出來爲簡潔起見)

urlpatterns = patterns('', 
    url(r'^$', HomePageView.as_view(), name='index'), 
    url(r'^upload/$', views.upload, name='upload'), 
    url(r'^upload/(?P<pk>\d+)/$', views.edit_file, name='updatefile'), 
    url(r'^download/(?P<file_id>\d+)/$', views.download_file, name='downloadfile'), 
    ... 
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), 
) 

模板中的那一行是

<ul class="nav navbar-nav"> 
<li><a href={% url 'upload' %}>Upload</a></li> 
<li><a href={% url 'manage_data_list' %}>Manage Data</a></li> 

正如你可以看到,有一個名爲視圖「上傳」沒有參數,它指向只接受請求對象並因此不需要參數的視圖。爲什麼這個反向查找不起作用?

+1

你確定你正在運行正確的版本嗎?看起來這個應用程序是爲Django 1.5+編寫的(URL標記語法隨後改變),但是您運行的是早期版本。 – 2014-10-03 10:38:18

+0

啊,我不知道有什麼區別 – sirlark 2014-10-03 10:57:51

+0

是的,這是django版本。 Virtualenv來拯救 – sirlark 2014-10-03 11:24:38

回答

-1

它必須是這樣的:

{%url'upload'something.pk%}。

你的網址正在尋找一個參數,這就是爲什麼你會得到這個錯誤。