Ich frage mich, wo sollte ich ein Validierungsformular auf die Datenbank zugreifen. Grundsätzlich brauche ich Benutzer eingeben item_type
und ich möchte zuerst überprüfen, ob die item_type
in der Datenbank existiert.Code-Architektur - Flask - Wo Formularvalidierung aus der Datenbank?
Es gibt 3 Möglichkeiten:
In dem Datenbank-Modell habe ich
ItemType
Klasse und ich habe Funktionadd()
, die, wenn das Element vorhanden ist oder nichtIm Hinblick hat bestehende überprüfen, so in die Route der Seite, von wtforms
form.validate_on_submit()
, ich mache eine Prüfung, um Daten aus der Datenbank zu bekommen, und wenn vorhanden, werde ich hier Fehler setzenIn wtforms
validate()
, hinzufügen ing zusätzliche Validierung nach Standard Validierung derForm
Klasse
ich Leute gesehen, habe mit Nummer 2 und 3, aber nicht sicher, welches das beste ist. Die Fehlermeldung, die ich will, muss sie auch auf dem spezifischen Feld des Formulars anzeigen (dies ist mit Methode 2 und 3 möglich, da sie auf das Formularfeld verweisen), aber wiederum, da sie mit dem Zugriff auf die Datenbank in Verbindung steht ist es besser, alles in Bezug auf den Datenbankzugriff auf Modellfunktionen zu setzen?
Wenn Sie nicht 'validate_email' vorbei und' validate_password' in jedem jeweiligen Feld Konstruktor als benutzerdefinierte Validatoren, wie/wann werden sie gerufen? Gibt es etwas automatisch Magisch passiert als Folge der Benennung Ihrer Methode plus Erben der WTForm Form? – afilbert