2016-07-16 64 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')