2014-05-14 81 views
1

,我發現了錯誤Django的NoReverseMatch URL問題

"Reverse for 'recall' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'associate/recall/']" 

當我嘗試提交表單。這裏是我的html:

<form action="{% url 'associate:recall' ordered_group %}" method="post"> 
     {% csrf_token %} 

     <div> 
      <label for="recall">enter as many members of {{ ordered_group }} as you can recall </label> 
      <input type="text" id="recall" name="recall"> 
     </div> 
     <div id="enter_button"> 
      <input type="submit" value="enter" name="enter" /> 
     </div> 
     <div id="done_button"> 
      <input type="submit" value="done" name="done" /> 
     </div> 
    </form> 

「ordered_group」 是從 '學習' 視圖結轉模型對象:

urls.py:

urlpatterns = patterns('', 
    url(r'^learn/', "associate.views.learn", name='learn'), 
    url(r'^recall/', 'associate.views.recall', name='recall'), 
    url(r'^$', "associate.views.index", name='index'), 
) 

我想使用在學習視圖上下文中提交給html的ordered_group模型對象,回到召回視圖作爲參數。可以這樣做嗎?這對我來說很有意義,但是做這件事的正確方法是什麼?

views.py

def recall(request, ordered_group): 
    ... 


def learn(request): 
... 
ordered_group = ordered_groups[index] 

return render(request, 'associate/learn.html', {'dataset':model, 'ordered_group':ordered_group}) 

我想與

回答

3

在你的HTML,你正在做的提交形式:

{% url 'associate:recall' ordered_group %} 

Django的預計, 「召回」 的網址是在「關聯」命名空間中,因爲「:」。但是,你需要聲明的命名空間中urls.py,如:

url(r'^recall/', 'associate.views.recall', namespace='associate', name='recall') 

如果你不想命名空間,只是做:

{% url 'recall' ordered_group %} 

而且,關於 「ordered_group」,你需要聲明它在你的網址,如:

url(r'^recall/(?P<ordered_group>\w+)', 'associate.views.recall', namespace='associate', name='recall') 

你傳入ordered_group在HTML,youare在views.py期待這一點,但你是不是在你的網址期待這一點。

+0

我試過你的建議,我不認爲這是問題所在。我仍然得到一個NoReverseMatch,但現在帶有一個參數:「未找到帶有參數'(,)'和關鍵字參數'{}'的'召回'的倒退。 「你能想到代碼中的其他明顯區域可能會出錯嗎? –