2016-07-16 63 views
0

我使用Django 1.9的工作,我不断收到此错误:Django的重定向错误:NoReverseMatch

NoReverseMatch at /class/create/

Reverse for 'class_sheet' with arguments '()' and keyword arguments '{'class_name': 'd'}' not found. 0 pattern(s) tried: []

我有这个在我的应用程序/ views.py

from django.shortcuts import redirect 
... 

def class_sheet(request, class_name): 
    get_object_or_404(EnclaveClass, pk=class_name) 
    return HttpResponse("this is %s" % class_name) 

def create_class(request): 
return redirect('class_sheet', class_name='d') 
在我的URS

.py

urlpatterns = [ 
    ... 
    url(r'^create/$', views.create_class, name="create_class"), 
    url(r'^(?P<class_name>.*)/$', views.class_sheet, name="class_sheet"), 
    ... 
] 

我一直没能在网上找到任何帖子,指出我的功能有任何错误。任何建议如何解决或在哪里寻找赞赏。

+3

你是否在包含URL时指定了'namespace', G。 'include('app.urls',namespace ='app')'?如果是这样,你应该使用'app:class_sheet'来反转它。 –

+0

工作! name-spacing是我偏离我正在使用的教程的地方。非常感谢你的建议。 – Liu

回答

-1

如果对此URL的请求满足URL中的正则表达式,是否在浏览器中检查了CONSOLE?

+0

当我取出重定向并转到/ class/create时,向我展示内容非常高兴。 (你也可以在代码片段的“创建”URL模式中看到。) – Liu

+0

我的错误,我刚刚检查了你的class_sheet的URL模式的正则表达式,它匹配“/ class/create /”url并且它应该。 但是你想要形成的URL模式实际上是什么?可以举个例子吗? –

+0

P.S.您可以在正则表达式的任何网站上自行检查URL的正则表达式。 其中之一是 - > http://pythex.org/ –

0

我没有指定名称空间!将create_class更改为

def create_class(request): 
    return redirect('class:class_sheet', class_name='d') 

重定向工作。

非常感谢弗拉基米尔达尼洛夫在评论中指出这对我!

1

您应该使用'app:class_sheet',其中appnamespace用于包含URL:include('app.urls', namespace='app')