Ich glaube fest an den ketzerischen Gedanken der engen Kopplung zwischen Backend und Frontend: Ich möchte, dass existierendes, implizites Wissen über ein Backend automatisch beim Generieren von Benutzeroberflächen genutzt wird. Wenn z. B. eine VARCHAR-Spalte ein Maximum von 20 Zeichen aufweist, sollten GUIs den Benutzer automatisch davon abhalten, mehr als 20 Zeichen in einem verwandten Formularfeld einzugeben.Ein Python Web Application Framework für enge DB/GUI-Kopplung?
Und ich habe starke Antipathie zu ORMs, die meine Datenbanktabellen definieren möchten, oder basieren auf einigen Hack, wo jede Tabelle aufgrund des ORM zusätzliche numerische ID-Spalten haben muss.
Ich habe ein wenig in Python-Datenbank-Frameworks geschaut und ich denke, ich kann daraus schließen, dass die SQLAlchemy am besten zu meiner Mentalität passt.
Nun muss ich ein Webanwendungsframework finden, das natürlich zu SQLAlchemy (oder einem Äquivalent) passt und vielleicht sogar mit meinem Appetit auf Kopplung. Mit "Web Application Framework", I-Produkte bedeuten/Projekt wie Pyhons, Django, Turbogears, web2py usw.
Eg, sollte es im Idealfall der Lage sein: eine geeignete Form Widget
- automatisch wählen für Daten, die in eine bestimmte Spalte eintreten, wenn sie dazu aufgefordert werden; Wenn die Spalte beispielsweise einen Fremdschlüssel für eine Spalte mit 10 verschiedenen Werten aufweist, sollte das Widget die 10 möglichen Werte als Dropdown-Liste anzeigen.
- auto-generate Javascript Formular Validierungscode, der dem Endbenutzer schnelle Fehlerrückmeldung gibt, wenn a String wird in ein Feld eingegeben, die im Begriff ist, in einer Integer-Spalte enden, etc
- automatisch generieren eine Kalender-Widget für Daten, die in einer Datumsspalte am Ende werden
- hint NOT NULL Constraints wie JavaScript die sich über leere oder leere Daten in einem verwandten Eingabefeld beschwert
- Javascript-Validierungscode erzeugen, das relevante übereinstimmt (einfaches) CHECK-Constraints
- es leicht machen, zu Vermeiden SQL Injektion durch vorbereitete Anweisungen und/oder Validierung von extern abgeleiteten Daten
- machen es leicht zu avoid Cross-Site-Scripting- durch automatisch ausgehende Strings entweichen kann, wenn entsprechende
- nutzen Constraint Namen zu etwas benutzerfreundlichen Fehlermeldungen im Fall zu erzeugen ein constrataint verletzt wird
All dies sollte dynamisch passieren, also werden Tabellenanpassungen automatisch auf dem Frontend reflektiert - wahrscheinlich mit einem Caching-Mechanismus, so dass die gesamte Modellintrospektion die Leistung nicht zerstören würde. Mit anderen Worten, ich möchte meine Modelldefinition nicht in einer XML-Datei (oder ähnlichem) wiederholen, wenn sie bereits sorgfältig in meiner Datenbank definiert wurde.
Gibt es ein solches Framework für Python (oder für irgendeine andere Sprache)? Wenn nicht: Welches der verschiedenen Python-Webanwendungs-Frameworks wird mir am wenigsten in die Quere kommen, wenn ich Teile der oben genannten Features selbst hinzufügen würde?
Spielt Django gut mit SQLAlchemy? Zuletzt hatte ich gehört, dass der Django + SA Zweig moribund war und die ursprüngliche Frage SA als ORM der Wahl bezeichnete. –