我是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