Wie man sich denken kann, ist Flask nicht das CMS mit "idiotensicherer" GUI daherkommt wie Joomla - im Grunde aber auch recht schnell zu benutzen, wenn es nicht schön sein muss, aber Funktioniere.
Den größten Vorteil sehe ich darin , dass man die Tamplate-Erstellung wirklich Dritten überlassen kann, die vom System überhaupt nichts verstehen müssen. Mach mir eine Statische HTML-Seite mit Javascript-Kosmetik und dir keine Gedanken...
Es ist zwar so, das jinja2 auch so seine Tricks drauf hat etwas Bewegung im Template unterzubringen. So lassen sich Verzweigungen oder Schleifen - bei entsprechender Übergabe auch im Template Platzieren - aber das kennt man von Template-Engines so kennt...
Um nicht zu verwirren hier mal ein Beispiel - wo ich dies zur Anschauung vermieden habe... Die Fachleute können wegschauen - für die, die noch nie so etwas gesehen haben: hinsehen...
Die Ausgabe von einer von Flask erzeugten Seite. Anders wie Joomla spielt Flask hier den Webserver gleich mit und horcht am port:5000 während der Apache hier ebenfalls in meinem Notebook wohnt und weiter am port:80 lauscht. Die Beiden wohnen jetzt quasi Tür an Tür.
Wie kommt diese Bildschöne Seite nun zustande? Ganz grob: Zuerst gab es mal einen Entwurf - gan Statisch in HTML mit geladenen JQuery als Javaskript Bibliothek... danach werden die mit den Pfeilen gekennzeichneten Teile praktisch "ausgeschnitten" - und mit Platzhaltern ersetzt.
Dann sieht das "Tamplate" als HTML-Datei im Browser geöffnet etwa so aus:
Wie man sieht, sieht man nicht viel. Da scheint auch einiges verrutscht, weil ich mich entschlossen habe ganze Blöcke "einfliegen" zu lassen. Die CSS Anweisungen greifen so in's Leere und das Menü landet so neben dem "unsichtbaren" Bild (Der Pfad zum Bild wird auch zur Laufzeit angegeben - wie bei der CSS-Datei s.u ) und nicht darunter....
Würde ich jetzt z.B. das "Menü" (im Grunde ja eine Liste) oder die Tabelle (besteht aus wiederkehrenden Zeilen) durch eine Schleife füllen wollen, sähe das hier gleich viel Professioneller und aufregender mit {% Anweisung %} aus - aber auch unübersichtlicher - besonders wenn man den etwas besonderen Umgang von Python mit Daten nicht wirklich kennt....
Was man in der Ausgabe im Browser nicht sieht - und was ich bei Joomla vermisse:
<link rel="stylesheet" href="https://code.jquery.com/ui/1.14.0/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/{{url_for('static', filename='css/user.css') }}">
Man ist ganz Frei in ein Tamplate einzubinden , was man möchte - hier die CSS Dateien, oder Javaskript Bibliotheken - ohne große Klimmzüge zu machen...Nur der Pad zur CSS-Date (ebenso wie zum Bild) muss dabei "eingeflogen" werden.
Der geneigte Leser mag sich fragen, was in dem Template dieses {{irgendwas | safe}} bedeuten soll. Eigentlich müsste es "unsafe" heißen und bedeutet, dass die Ausgabe die kommt wirklich als HTML ausgegeben werden soll und nicht so, wie hier in der "codebox" dargestellt... Ohne die Anweisung würde es "Html-sicher ausgegeben" und eben nicht ausgeführt.