2013-07-09 1 views
1

Я использую django-registration (v.0.8) для реализации регистрации. Я перепробовал post_activation_redirect, чтобы отправить пользователей на страницу, изначально запрошенную, нажав на следующую строку: next =/my_next_page/в конец URL.Django noreversematch проблемы после переопределения post_activation_redirect

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'), 
    .... 

Это приложение, и UR импортируются через эту линию:

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

Есть хороший способ систематически отлаживать что-то вроде этого? Я пробовал проб и ошибок снова и снова, и, похоже, он ничего не выкапывает.

ответ

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') 
+0

Спасибо. Это была опечатка, но не основная проблема. Я внес изменения, и я все еще получаю: Reverse для «top-free-apps» с аргументами «()» и аргументами ключевого слова «{}» не найден. – user2562272

+0

не должно быть '' arpu: top-free-apps''? – karthikr

+0

Да, это получилось. Спасибо! – user2562272