Django NoReverseMatch错误

时间:2011-06-07 17:53:22

标签: django

我是Django的新手,已经开始研究成熟的Django项目了。

我想在用户帐户屏幕中添加新页面,然后链接到该页面。但是我收到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>

现在当我加载/面板时,我得到一个TemplateSyntaxError:NoReverseMatch。

Reverse for 'account_history' with arguments '()' and keyword arguments '{}' not found.

更新:作为测试,我删除了模板中的链接 - 并且/ panel加载正常。如果我然后删除/users/urls.py和/users/views.py / panel仍然加载。我已删除所有cookie,历史记录等。我是否必须在终端上运行命令(如ruby中的rake)来提交更改urls.py?或者应该改变'只是工作'?

4 个答案:

答案 0 :(得分:2)

尝试:

{% url users.views.control_panel %}
{% url users.views.history %}

在模板中并更改:

url(r'^panel/history/$','theproject.users.views.history',name='account_history'),
url(r'^panel/$','theproject.users.views.control_panel',name='account_panel'),

           ^

在网址中。 (注意第一个参数中的尾部斜杠。)

答案 1 :(得分:2)

如果你正在使用mod_wsgi,那么就简单了:

$ touch /path/to/your/wsgi_file.wsgi

应该做的伎俩(无需重启服务器)。

答案 2 :(得分:1)

移动它:

url(r'^panel/history/$',
    'theproject.users.views.history',
    name='account_history'
),

users/urls.py到项目级urls.py

可能users/urls.py未与主urls.py相关联,/panel/也定义了{{1}}的视图

答案 3 :(得分:1)

回答我自己的问题(基于提供的帮助here)...

由于服务器正在生产,因此在重新启动服务器之前,对urls.py的更改不会产生任何影响。目前我没有su访问权限,因此无法apachectl restart,但似乎这将解决此问题。