2014-09-20 5 views
1

По какой-то причине я не могу использовать систему проверки подлинности по умолчанию django, поскольку я написал пользовательскую функцию входа. Теперь каждый успешный вход в систему я хочу, чтобы мой пользователь перенаправлялся на другой вид на основе класса приложения.Httpreponse перенаправляет на класс, основанный на представлении

т.е:

#frontend/views.py 
login(request, user) 
return HttpResponseRedirect(reverse('platform:UserProfileView')) 

#frontend/urls.py 
urlpatterns = patterns('frontend.views', 
    url(r'^$', 'base_view', name='base_view'), 
    url(r'^accounts/login/$', 'login_user', name='login_user') 
) 

#platform/urls.py 
urlpatterns = patterns('platform.views', 
    url(r'^(?P<user>.+)$', UserProfileView.as_view(), name='user_profile_view'), 
) 

Теперь мой выше обходной путь приведены ниже ошибки ...

Reverse для 'UserProfileView' с аргументами '()' и именованных аргументов '{}' не найден. 0 шаблон (ы) попытался: []

#platform/vies.py 

class UserProfileView(View): 
    @method_decorator(login_required) 
    def get(self, request, user): 
     if request.user.username == user: 
      profile = request.user 
      return render(request, 'app/homepage.html', {'profile': profile}) 
     else: 
      raise Http404 

я упускаю что-то ..? или любым другим способом вокруг этого?

Полный Traceback:

Environment: 


Request Method: POST 
Request URL: http://127.0.0.1:8000/accounts/login/ 

Django Version: 1.7 
Python Version: 2.7.6 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'frontend', 
'platform') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware') 


Traceback: 
File "/home/vijay/nightybuild/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    111.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/home/vijay/nightybuild/readtamil/frontend/views.py" in login_user 
    49.     return HttpResponseRedirect(reverse('UserProfileView', args=(user.username,))) 
File "/home/vijay/nightybuild/env/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in reverse 
    546.  return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) 
File "/home/vijay/nightybuild/env/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in _reverse_with_prefix 
    463.        (lookup_view_s, args, kwargs, len(patterns), patterns)) 

Exception Type: NoReverseMatch at /accounts/login/ 
Exception Value: Reverse for 'UserProfileView' with arguments '(u'username',)' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

ответ

0

Вы определили имя для URL. Используйте имя с соответствующим аргументом.

from django.core.urlresolvers import reverse 

... 

login(request, user) 
return HttpResponseRedirect(reverse('platform:user_profile_view', 
            args=(user.username,))) 

# OR 

return HttpResponseRedirect(reverse('platform:user_profile_view', 
            kwargs={'user': user.username})) 

ПРИМЕЧАНИЕ: Я предполагаю, что представление принимает имя пользователя в качестве параметра. Измените args соответственно.

+0

Теперь ошибка совпадает с аргументом {u'username} ..... А также я обновил свой вопрос с помощью класса. Скажите, что это имя пользователя ok или еще? – 2014-09-20 09:33:30

+0

@ iask, я не понимаю вашего комментария. Если вы имеете в виду, что получаете ошибку, можете ли вы показать полную трассировку? – falsetru

+0

@iask. Как я писал в ответ, используйте имя url, а не имя класса: 'reverse ('UserProfileView', ...)' -> 'reverse ('user_profile_view', ...)' – falsetru

Смежные вопросы