2

私は、独自のフォームと独自の検証ロジックを使用して、基本の django-allauth SignupView クラスを拡張する独自のクラス LocalSignup を作成しました。LOGIN_REDIRECT_URL問題は、成功すると、ビューをsettings.pyの django 以外にリダイレクトできないことです。success_urlクラスベースのビューにフィールドを含めました。関数をオーバーライドしようとしましたget_success_url(以下を参照)。また、を使用して成功時のリダイレクトを渡そうとしました LocalSignup.as_view(success_url="/add_account_select/")。どれも機能していません。私が間違っていることについてのアイデアはありますか?

class LocalSignup(SignupView):
    form_class = AllAuthUserForm
    template_name = 'signup/social_login.html'
    success_url = '/add_account_select/'  #reverse_lazy('add_account_select')    

    def get_success_url(self):
        return '/add_account_select/'  #reverse('add_account_select')

    def dispatch(self, request, *args, **kwargs):
        # self.sociallogin = request.session.get('socialaccount_sociallogin')
        return super(LocalSignup, self).dispatch(request, *args, **kwargs)

    def form_valid(self, form):
        ret = super(LocalSignup, self).form_valid(form)
        ### MY FORM VALIDATION LOGIC
        return ret

    def get_context_data(self, **kwargs):
        ret = super(LocalSignup, self).get_context_data(**kwargs)
        ret.update(dict(username=self.sociallogin.account.user.first_name,
                        photo_url=self.sociallogin.account.get_avatar_url() ))
        return ret
4

2 に答える 2

2

デフォルト ビューでは、ビューのサインイン フォームに「次の」フィールドがある場合、allauth は自動的にそこにリダイレクトします。

<input id="login_redirect" type="hidden" name="next" value="#" />

完全なフォーム

      <form method="POST" action="{% url "account_login" %}">
        {% csrf_token %}
        {{form}}
        <input  type="hidden" name="next" value="/add_account_select/" />
        <button type="submit" class="btn btn-primary">Sign IN</button>
      </form>
于 2014-04-24T09:35:40.017 に答える
1

最新の回答を提供するためだけに:

django-allauth=0.30.0 を使用すると、次のようにうまく動作しますviews.py

from allauth.account.views import SignupView


class LocaLSignupView(SignupView):
    success_url = '/page/to/redirect/to'
于 2017-01-11T13:17:57.690 に答える