Я створив власний клас LocalSignup, якийрозширює базовий клас django-allauth SignupView за допомогою власної форми та власної логіки перевірки. Проблема полягає в тому, що при успіху я не можу переконати погляд на що-небудь, крім django LOGIN_REDIRECT_URL
у моїх settings.py. Я включив a 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
Відповіді:
1 для відповіді № 1У поданні за замовчуванням, якщо у вигляді подання для входу є поле "наступне", 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>
0 для відповіді № 2
Просто для того, щоб надати актуальну відповідь:
Використовуючи django-allauth = 0.30.0, наступне добре працює в views.py
from allauth.account.views import SignupView
class LocaLSignupView(SignupView):
success_url = "/page/to/redirect/to"