我是Django的新手,已經開始研究成熟的Django項目。Django NoReverseMatch錯誤
我想爲用戶帳戶屏幕添加一個新頁面,並鏈接到它。但是我得到一個NoReverseMatch錯誤。
要/users/urls.py我說:
url(r'^panel/history$',
'theproject.users.views.history',
name='account_history'
),
...這是與它上面的線是一致的:
url(r'^panel$',
'theproject.users.views.control_panel',
name='account_panel'
),
要/users/views.py我說:
@login_required
def history(request):
return render_to_response('users/ourbrand_history.html', {},
context_instance=RequestContext(request))
...這是與它上面的線是一致的:
@login_required
def control_panel(request):
return render_to_response('users/ourbrand_panel.html', {},
context_instance=RequestContext(request))
要/templates/users/ourbrand_panel.html我加入:
<a href="{% url account_history %}">History</a>
...這與它上面的線是一致的:
<a href="{% url account_panel %}">Home</a>
現在,當我加載/面板I得到一個TemplateSyntaxError:NoReverseMatch。
Reverse for 'account_history' with arguments '()' and keyword arguments '{}' not found.
更新:作爲一個測試,我刪除了我的鏈接在模板 - 和/面板加載罰款。如果我然後刪除/users/urls.py和/users/views.py /面板仍然加載。我刪除了所有的cookies,歷史記錄等。我是否需要在終端上運行一個命令(比如ruby中的rake)來提交對urls.py的更改?或者應該改變'正常工作'?
據我所知,一切都看起來是正確的(儘管後面的斜槓是一個好主意,正如@pastylegs所說)。有沒有可能是你沒有剪切/粘貼,在另一行中可能會影響它的一些小的語法錯誤?也許是一個額外的引用「或改變模板讀取方式的東西? – 2011-06-07 19:03:19
(儘管我認爲你剪切/粘貼代碼,顯示的內容是正確的) - 你可以仔細檢查你是否在所有地方一直使用下劃線'_',沒有意外地使用連字符'-' :)我只是測試我的命名的URL,切換我用於下劃線(工作)的連字符,但是當我混合它們時,它會產生相同的錯誤 – 2011-06-07 19:12:17
如果您正在運行Django開發服務器的所有文件更改都會導致服務器重新加載文件,因此您不必提交任何內容。但是,在模板中 - 如果變量不存在,它只是計算爲空字符串,它不會't給你任何錯誤,所以頁面將加載正常 – 2011-06-07 19:16:00