@csrf_exempt
@social.apps.django_app.utils.psa('{0}:complete'.format(URL_NAMESPACE))
def lti_login_and_complete_view(request, backend, *args, **kwargs):
 if (request.method != 'POST'):
  return HttpResponseNotAllowed('POST')
 request.backend.start()
 return complete(request, backend, *args, **kwargs)

@ csrf_exempt @ social . apps . django_app . utils . psa ( '{0}:complete' . format ( URL_NAMESPACE ) ) def lti_login_and_complete_view ( request , backend , * args , ** kwargs ) : if ( request . method != 'POST' ) : return HttpResponseNotAllowed ( 'POST' ) request . backend . start ( ) return complete ( request , backend , * args , ** kwargs )
this is a combination login/complete due to lti being a one step login .