diff --git a/social/apps/django_app/utils.py b/social/apps/django_app/utils.py index 7b5f26ce2..d635e6c2a 100644 --- a/social/apps/django_app/utils.py +++ b/social/apps/django_app/utils.py @@ -2,6 +2,7 @@ from django.conf import settings from django.core.urlresolvers import reverse +from django.http import Http404 from social.utils import setting_name, module_member from social.strategies.utils import get_strategy @@ -27,10 +28,13 @@ def wrapper(request, backend, *args, **kwargs): uri = redirect_uri if uri and not uri.startswith('/'): uri = reverse(redirect_uri, args=(backend,)) - request.social_strategy = load_strategy( - request=request, backend=backend, - redirect_uri=uri, *args, **kwargs - ) + try: + request.social_strategy = load_strategy( + request=request, backend=backend, + redirect_uri=uri, *args, **kwargs + ) + except ValueError: # no such backend + raise Http404 # backward compatibility in attribute name, only if not already # defined if not hasattr(request, 'strategy'):