ich ein Login-Formular in django habe, wo ich einige zusätzliche Kontrollen in meiner sauberen Methode zu tun:Django - von der Form sauberen Methode umleiten
class LoginForm(BootstrapFormMixin, forms.Form):
email = forms.EmailField(required=True, max_length=30)
password = forms.CharField(required=True, widget=forms.PasswordInput)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_id = self.__class__.__name__.lower()
self.helper.form_action = ''
self.helper.layout = Layout(
Field('email'),
Field('password'),
Div(
Submit('submit', _('Login'),
css_class="btn btn-block btn-success"),
css_class=''
)
)
def clean(self):
email = self.cleaned_data.get('email')
password = self.cleaned_data.get('password')
user = authenticate(email=email, password=password)
if user:
company = user.company
if not company.is_active:
# here I want to make a redirect; if is it possible to add a flash message it would be perfect!
raise forms.ValidationError(_('Account activation is not finished yet'))
else:
raise forms.ValidationError(_('Invalid credentials'))
return self.cleaned_data
Es funktioniert, aber wenn Anmeldeinformationen korrekt sind, aber der Benutzer verwandtes Objekt namens Firma ist nicht aktiv (is_active = False) Ich möchte den Benutzer in eine andere Ansicht umleiten und eine Flash-Nachricht hinzufügen (möglicherweise unter).
Ist eine solche Umleitung möglich?
Vielen Dank!
Es ist die * Ansicht *, die für die Rückgabe einer HTTP-Antwort (einschließlich Weiterleitungen) verantwortlich ist. Formulare sind für die Verarbeitung der Eingabedaten zuständig. Sie geben keine Antworten zurück, sodass Sie nicht von innerhalb des Formulars umleiten können. – Alasdair
Wie kann Ansicht wissen, ob es Redirect oder etwas geben sollte? Was soll ich vom Formular zurückgeben? – dease