1

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

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:

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

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

4

1 回答 1

0

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

url(r'^top-free-games/$', TopFreeAppsView.as_view(), name='top-free-apps')
于 2013-07-09T13:49:51.137 回答