2014-05-15 29 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")), 

说明: $ - 结束的字符串匹配字符,所以你需要时,您的网址即将结束放。