Mehrfache Anmeldung, Anmeldeformulare mit Django-Allauth

Die Anwendung, die ich arbeite, benötigt ein separates Login für 2 verschiedene Benutzertypen. Wir brauchen "Kunden" und "Geschäfts" Eigentümer, um sich registrieren zu können.

Für den "Business" Besitzer alles, was ich tun muss, ist die boolesche user.is_business auf True

Ich habe ACCOUNT_SIGNUP_FORM_CLASS mit einer separaten Klasse verwendet, die den Booleschen auf true setzt und das funktioniert wie ein Charme. Aber dann funktioniert das Client-Login nicht mehr.

Gibt es eine Möglichkeit, eine separate Anmeldungsansicht für einen anderen Benutzer zu erstellen?

Ich habe folgendes ausprobiert

 class BusinessUserRegistrationView(FormView): form_class = BusinessSignupForm template_name = 'allauth/account/signup.html' view_name = 'organisersignup' success_url = reverse_lazy(view_name) organisersignup = BusinessUserRegistrationView.as_view() 

Und die Form

 class BusinessSignupForm(BaseSignupForm): password1 = SetPasswordField(label=_("Password")) password2 = PasswordField(label=_("Password (again)")) confirmation_key = forms.CharField(max_length=40, required=False, widget=forms.HiddenInput()) def __init__(self, *args, **kwargs): super(BusinessSignupForm, self).__init__(*args, **kwargs) if not app_settings.SIGNUP_PASSWORD_VERIFICATION: del self.fields["password2"] def clean(self): super(BusinessSignupForm, self).clean() if app_settings.SIGNUP_PASSWORD_VERIFICATION \ and "password1" in self.cleaned_data \ and "password2" in self.cleaned_data: if self.cleaned_data["password1"] \ != self.cleaned_data["password2"]: raise forms.ValidationError(_("You must type the same password" " each time.")) return self.cleaned_data def save(self, request): adapter = get_adapter() user = adapter.new_user(request) user.is_business = True adapter.save_user(request, user, self) self.custom_signup(request, user) setup_user_email(request, user, []) return user 

Und in den urls.py

 url(r'^organiser/$', 'authentication.views.organisersignup', name='organisersignup'), 

Das Problem ist, dass irgendwie die boolesche is_business nie auf True gesetzt ist. Das von Shows, kann ich sparen, aber was ist gespeichert ist nie ein Geschäft immer ein Client. Die BusinessSignupForm ist eine Kopie der SignUpForm, die in den Allauthformen gefunden wurde.

Was mache ich falsch?

One Solution collect form web for “Mehrfache Anmeldung, Anmeldeformulare mit Django-Allauth”

Ich werde die Frage beantworten, da ich die Lösung gefunden habe, um mehrere Anmeldeformulare mit Allah zu haben.

Bilden:

 class BusinessSignupForm(SignupForm): def save(self, request): user = super(BusinessSignupForm, self).save(request) user.is_organizer = True user.save() return user 

Aussicht

 class BusinessUserRegistrationView(SignupView): template_name = 'allauth/account/signup-organizer.html' form_class = BusinessSignupForm redirect_field_name = 'next' view_name = 'organisersignup' success_url = None def get_context_data(self, **kwargs): ret = super(BusinessUserRegistrationView, self).get_context_data(**kwargs) ret.update(self.kwargs) return ret organisersignup = BusinessUserRegistrationView.as_view() 

Vorlage

  <form id="signup_form" method="post" action="{% url 'organisersignup' %}"> {% csrf_token %} {% bootstrap_form form %} </form> 

Dies kann immer wieder verwendet werden, um die Eigenschaften des benutzerdefinierten Benutzermodells zu ändern, wenn man einen hat.

Derzeit läuft Django == 1.8.10 und django-allauth == 0.24.1

  • Verbinde django-allauth als endpunkt im django-rest-rahmen
  • Kennwortfeld kennzeichnet Kennwort im Klartext
  • Django-allauth Anmeldung mit Facebook-Token von iOS Device
  • Mit Google App Enigne's Mail API für Django-Allauth E-Mail
  • Python ist die beste Programmiersprache der Welt.