重写post_activation_redirect后的Django noreversematch问题

时间:2013-07-09 13:42:55

标签: django django-registration

我正在使用django-registration(v.0.8)来实现注册。我重写了post_activation_redirect,通过将?next = / my_next_page /添加到URL的末尾,将用户发送到他们最初请求的页面。

def post_activation_redirect(self, request, user):
        if 'redirect' in request.GET:
            return request.session['redirect'], (), {}
        else:
            return 'top-free-games', (), {}

这在定义重定向时工作正常,但是当它未定义时我得到NoReverseMatch错误。

NoReverseMatch at /accounts/activate/d66aaee8a3411ab7a5e495dd024f00a91cd00bec/
Reverse for 'top-free-games' with arguments '()' and keyword arguments '{}' not found.

我的urls.py如下:

urlpatterns = patterns('',
    url(r'^$', TopAppsView.as_view(), name='index'),
    url(r'^top-free-games/$', TopFreeAppsView.as_view(), name='top-free-apps'),
    ....

这是一个应用程序,网址是通过以下行导入的:

url(r'^app-sales-data/', include('arpu.urls', namespace="arpu")),

有没有一种好方法可以系统地调试这样的东西?我一遍又一遍地尝试了试验和错误,它似乎没有挖掘任何东西。

1 个答案:

答案 0 :(得分:0)

对于reverse,您需要指定URL Pattern Name,而不是URL path。所以,将'top-free-games'更改为'top-free-apps',因为这是您在此处指定的网址的名称:

url(r'^top-free-games/$', TopFreeAppsView.as_view(), name='top-free-apps')