Add substantial content to README.md
This commit is contained in:
parent
c1ce35a44c
commit
c983f44fed
77
README.md
77
README.md
@ -1,3 +1,76 @@
|
|||||||
# flask-website
|
Website auf Jinja2-Basis
|
||||||
|
=========================
|
||||||
|
|
||||||
|
Die Website auf Mason2-Basis (bzw. Mason1 auf der digi-Instanz) soll durch eine
|
||||||
|
Eigenimplementierung auf Jinja2 migriert werden.
|
||||||
|
|
||||||
|
Jinja2 läuft auf Django- oder auf Flask-Basis. Wir bevorzugen Flask, da wir
|
||||||
|
mutmaßlich keine Datenbank brauchen werden, worauf das mächtigere Django
|
||||||
|
stark ausgerichtet ist. Flask ist in der Beziehung leichtgewichtiger.
|
||||||
|
|
||||||
|
`flask`
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Unser auf Jinja2-basierter Application Server mit flask.
|
||||||
|
|
||||||
|
|
||||||
|
`templates` und Layoutkaskaden
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
`**/layout.jtml` heißen die kaskadenartig angewendeten Layoutdateien. Wird eine normale Seite mit der
|
||||||
|
Dateinamensendung `.html` aufgerufen, wird zunächst versucht, eine Datei namens `layout.jtml` aus dem
|
||||||
|
gleichen Verzeichnis zu laden. Schlägt dies fehl, wird die Suche auf der nächsthöheren Verzeichnisebene
|
||||||
|
fortgesetzt, und so weiter. Das gleiche geschieht, wenn für eine `layout.jtml` wiederum die nächsthöhere
|
||||||
|
gefunden werden soll, aber nur solange jeweils die erste Zeile darin lautet:
|
||||||
|
|
||||||
|
{% extends layout() %}
|
||||||
|
|
||||||
|
Anstelle von `layout()` kann auch der Dateipfad von einem beliebigen anderen Template stehen.
|
||||||
|
Dieses wird dann verwendet. Enthält es aber selbst wiederum `{% extends layout() %}`, wird zu derselben
|
||||||
|
Kaskade zurückgekehrt, als würde es in der eigentlich aufgerufenen Seite stehen.
|
||||||
|
Jedwedes direkt angegebene Template außer `layout()` schiebt sich gewissermaßen zwischen
|
||||||
|
die aufgerufene Seite und die weitere, normale Layoutkaskade.
|
||||||
|
|
||||||
|
`DSL.*`
|
||||||
|
-------
|
||||||
|
|
||||||
|
Jinja2-Migrationen der Mason-Snippets (`<& /nav1/img, name => "neu" &>`) sind aufrufbar wie folgt:
|
||||||
|
|
||||||
|
`{{ DSL.img(name="neu") }}`
|
||||||
|
|
||||||
|
|
||||||
|
Sprachinfix
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Der Dateiendung der aufgerufenen Seite kann ein `de.`, `en.`, `fr.` oder `it.` vorangehen. Weitere
|
||||||
|
Sprachen können jederzeit hinzugefügt werden. Da es aber auch Top-Level-Verzeichnisse mit zwei
|
||||||
|
Buchstaben langen Namen geben kann (z.B. `nc/`), werden nur registrierte Sprachkürzel nach dieser
|
||||||
|
Logik berücksichtigt.
|
||||||
|
|
||||||
|
Erscheint in der URL als erstes Pfadsegment nach der Domain ein Sprachinfix (statt "en" geht
|
||||||
|
auch "Englisch/", "English", groß oder klein geschrieben), so wird bevorzugt die
|
||||||
|
entsprechende Fassung aufgerufen.
|
||||||
|
|
||||||
|
Alternativ, sollte die angefragte Fassung der Seite nicht gefunden werden, wird die englische bzw. die
|
||||||
|
deutsche Fassung genommen.
|
||||||
|
|
||||||
|
Aufrufe der Funktion `DSL.i18n(de="Text in deutscher Sprache", en="...", ...)` lösen sich entsprechend
|
||||||
|
der gefundenen Fassung auf, wenn der Textstring in der angefragten Sprache nicht verfügbar ist. Danach
|
||||||
|
wird die englische, dann die deutsche Fassung probiert.
|
||||||
|
|
||||||
|
Gleiches gilt für `DSL.i18n` im Filtermodus: `{% filter DSL.i18n %}...{% endfilter %}` kann immer dann
|
||||||
|
benutzt werden, wenn für unterschiedliche Sprachen verschiedene HTML-Markups verwendet werden sollen. Alle
|
||||||
|
von diesem Filter umfassten Inhalte werden gefiltert nach Elementen mit lang-Attribut. Nur diejenigen
|
||||||
|
dieser Elemente, die auf die angefragte bzw. gefundene Sprachfassung passen, werden samt Inhalt angezeigt.
|
||||||
|
|
||||||
|
|
||||||
|
Markdown
|
||||||
|
--------
|
||||||
|
|
||||||
|
Es wird ein Filter `markdown` definiert. In der Layout-Datei kann man diesen wie folgt nutzen:
|
||||||
|
|
||||||
|
{% filter markdown %}
|
||||||
|
{% block content %}Diese Seite hat keinen Inhalt, denn es ist nur die layout.jtml-Datei.{% endblock %}
|
||||||
|
{% endfilter %}
|
||||||
|
|
||||||
|
|
||||||
Application Gateway uwsgi, Application Webserver flask und Template Engine jinja2 konfiguriert und programmiert.
|
|
Loading…
Reference in New Issue
Block a user