2014-05-15 71 views
0

我無法弄清楚這一點。下面是URL模式我在我的應用程序urls.py模板中的Django url - NoReverseMatch在/

url(r'^(P<categoryName>[a-z]+)/$', views.displayCategory, name='displayCategory'), 

這裏是我的項目的全球urls.py:

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^$', include('publicworkspace.urls', namespace="publicworkspace")), 
    url(r'^createproblem/', include('createproblem.urls', namespace="createproblem")), 
    url(r'^publicproblem/', include('publicproblem.urls', namespace="publicproblem")), 
    url(r'^admin/', include(admin.site.urls)), 
) 

這裏是我想在我的模板來創建鏈接 < A HREF = 「{%URL 'publicworkspace:displayCategory' '數學' %}」>數學

每次我得到一個錯誤,通常是以下內容:

NoReverseMatch at/
Reverse for 'displayCategory' with arguments '(u'math',)' and keyword arguments '{}' not     found. 1 pattern(s) tried: [u'$(P<categoryName>[a-z]+)/$'] 
+0

如何將此網址導入您的全球網址?或者這是全球性的網址? – zymud

+0

我剛剛更新了我的問題與我的全球網址:) – lastmjs

回答

2

您的第一個urlpatterns行中的正則表達式r'^$'可能不是您想要的。它只會匹配一個空字符串。

我建議如下:

urlpatterns = patterns('', 
    url(r'^createproblem/', include('createproblem.urls', namespace="createproblem")), 
    url(r'^publicproblem/', include('publicproblem.urls', namespace="publicproblem")), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'', include('publicworkspace.urls', namespace="publicworkspace")), 
) 

注意,我搬到了相關線路的urlpatterns底部。如果你將它保持在頂端,它將永遠匹配,你的其他url模式將永遠不會被查看(因爲django採用了第一個匹配的)。

0

你的url模式有一個命名捕獲,但是你沒有告訴模板中你想分配值的名字。

試試這個:

< a href="{% url 'publicworkspace:displayCategory' categoryName='math' %}"> 
+0

沒有工作。現在我得到這個錯誤:NoReverseMatch在/ 反向'displayCategory'與參數'()'和關鍵字參數'{u'categoryName':u'math'}'找不到。嘗試1個模式:[u'$(P [a-z] +)/'] – lastmjs

1
url(r'^$', include('publicworkspace.urls', namespace="publicworkspace")), 

問題是在這裏。嘗試:

url(r'^', include('publicworkspace.urls', namespace="publicworkspace")), 

說明: $ - 結束的字符串匹配字符,所以你需要時,您的網址即將結束放。