2016-01-23 76 views
0

我收到以下異常在電影應用我的Django項目:Django上重定向NoReverseMatch錯誤

異常類型:NoReverseMatch在/電影/ 異常值:反轉「movie.views .movi​​e_detail'帶有參數'(u'the_peanuts_movie',)'和關鍵字參數'{}'未找到。 0圖案(多個)嘗試:[]

下面是movie.urls.py的URL模式:

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^(?P<movie_name>[\w_]+)$', views.movie_detail, name='movie_detail'), 
    url(r'^', views.movie_home, name='movie_home'), 
] 

下面是movies.views.py的某些部分:

def movie_detail(request, movie_name): 
    # code 
    ... 

def movie_home(request): 
    ... 
    return redirect(movie_detail, movie_name) 
    # movie_name is a string 

到目前爲止,我無法使這個代碼工作。但它的工作原理,如果我改變return語句,換上這movie_home功能

現在
movie_name += '/' 
    return redirect(movie_name) 

閱讀這種類型的計算器的其他幾個問題後,我知道return redirect(movie_name)聲明工作,因爲它重定向到URL: 127.0.0.1:8000/movie/whatever_is_the_movie_name

但我不明白爲什麼重定向到movie_detail視圖不工作。

我該如何讓它工作?

回答

2

首先,movie_detail應該是一個字符串('movie_detail')和'movie'命名空間下 - 也,請嘗試使用反向,並在名稱傳遞作爲ARG:

return redirect(reverse('movie:movie_detail', args=[movie_name])) 

此外,它看起來像你錯過了在urls.py之前的結尾斜槓$

url(r'^(?P<movie_name>[\w_]+)/$', views.movie_detail, name='movie_detail'), 
+0

它不起作用。例外情況如下: **異常類型:NoReverseMatch at/movie/ 異常值:未找到帶有參數'u'the_peanuts_movie',''和關鍵字參數'{}'的'movie_detail'。 0模式嘗試:[] ** –

+0

更新我的答案,添加第二部分,看看它現在是否工作 – Hybrid

+0

同樣的例外。 –