OAuth2認証にoauth2appライブラリを使用しているDjangoWebサイトがあります。また、非推奨のuni_formの代わりにcrispy_formsを使用するようにoauth2appを変更しました。
oauth2appのauthorize()メソッドは、Djangoデコレーター@login_requiredによって保護されています。実際、クライアントが最初にログインせずに認証しようとすると、ログインページが表示されます。
予想どおり、デコレータにより、ログインページのURLには、承認リクエストの元のURLを含む「次の」CGIパラメータが含まれます。
問題は、ログインページのテンプレートがインスタンス化されたときに「next」パラメータが伝播されないことです。私が欲しいのは、フォーム「action」に「next」パラメーターを含めることです。
このページは、解決策を提供することを目的としています。
http://django-uni-form.readthedocs.org/en/latest/helpers.html
「ビューでのヘルパーの操作」のセクションにあります。
その例に従って、私は試しました:
form = LoginForm()
redirect_url = request.GET.get('next')
if redirect_url is not None:
form.helper.form_action = reverse(login) + '?next=' +
redirect_url
ただし、結果のページのソースには、フォームの元の「アクション」が表示されます。form_actionへの割り当ては有効になっていないようです。実際、テンプレートをインスタンス化せずにform_actionを返すだけの場合、変更されていません。
return HttpResponse('action: ' + form.helper.form_action)
私を困惑させてください。