Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dynamische Webseiten mit Flask und reST

Reimar Bauer
November 29, 2014

Dynamische Webseiten mit Flask und reST

Der Beitrag stellt an Hand der Applikation, die sich hinter http://pymove3d.pysv.org verbirgt dar, wie leicht ähnliche Webseiten erstellt werden können. Diese Site verwendet: flask, jinja2, bootstrap und reST Textblöcke. Für dieses Projekt haben wir uns entschieden das Textmaterial mit reST zu erstellen um es Übersetzern zu erleichtern Textpassagen als ganzes zu übersetzen. Diese Textpassagen sind dadurch ebenfalls an anderer Stelle leicht weiter zu verwenden.

Reimar Bauer

November 29, 2014
Tweet

More Decks by Reimar Bauer

Other Decks in Programming

Transcript

  1. pymove3D Site Januar 2014: PySV Website Sprint für pymove3D. Ein

    Wochenende in Berlin: Peter Koppatz, Reimar Bauer und Stefania Trabucchi erstellen eine gut anpassbare Site wie sich später herausstellt. pymove3d-app; pymove3d Webseite; 29.11.2014 Reimar Bauer Folie 4
  2. Aufgabe Mai 2014: Wir brauchen eine Webseite für das ESKP

    - Projekt, für unser Institut. Bilder, Text, Inhalte leicht pflegbar; Markup; Dynamik; Theme Responsive; Lizenz GPL oder ähnlich; Fertigstellung, asap. 2 Tage? 29.11.2014 Reimar Bauer Folie 6
  3. So ist es aufgebaut flask Awendung pymov3d.py; jinja2 templates; translations

    text, in reST; static css, fonts etc. 29.11.2014 Reimar Bauer Folie 8
  4. pymove3d content Snippet pymove3d Programm import os from d o

    c u t i l s . core import publish_parts from f l a s k import Flask # gets the path where a l l s t u f f i s located PYMOVE3D_PATH = os . path . dirname ( os . path . abspath ( __file__ ) ) app = Flask (__name__) def get_content ( filename , overrides=None) : def get_topmenue ( ) : app . jinja_env . globals . update ( get_topmenue=get_topmenue ) @app. route ( " / " ) def index ( ) : i f __name__ == " __main__ " : app . run ( host= ’ localhost ’ , port =5014, debug=True ) snippet–pymove3d.py 29.11.2014 Reimar Bauer Folie 9
  5. reST Markup Texte sind im Zusammenhang leichter formulierbar und zu

    übersetzen /templates/de/rst /templates/en/rst 29.11.2014 Reimar Bauer Folie 10
  6. reST Inhalte verarbeiten Sphinx kann reST Markup in HTML übersetzen.

    Es verwendet publish_parts aus den docutils. Snippet reST to HTML def get_content ( filename , overrides=None) : filename = os . path . j o i n (PYMOVE3D_PATH, filename ) content = u" " i f os . path . i s f i l e ( filename ) : with codecs . open ( filename , ’ r ’ , ’ utf −8 ’ ) as f : rst_data = f . read ( ) content = publish_parts ( rst_data , writer_name= ’ html ’ , settings_overrides=overrides ) [ ’ html_body ’ ] return content snippet–get_content.py 29.11.2014 Reimar Bauer Folie 11
  7. bootstrap theme template twitter bootstrap ist unter GPL und responsive

    Bootstrap jinja2 theme < !DOCTYPE html> <html lang=" en "><head> < t i t l e >PyMove3D − Der Python Wettbewerb . . . < / t i t l e > <link href=" / s t a t i c / css / bootstrap . css " rel =" stylesheet "> < / head> <body> <div id=" main "> {% block body %}{% endblock %} < / div>< !− − / main − −> < / div> < !− − / wrap − −> {% include " footer . html " %} < / body> < / html> snippet–theme.html 29.11.2014 Reimar Bauer Folie 12
  8. reST ist nicht so leicht zu stylen, aber ... html

    in reST Termine − − − − − − − . . raw : : html <table class=" table table−striped "> < t r > <td>Datum< / td> <td>Ort< / td> <td> A k t i v i t t < / td> < / t r > < / table> Kurse selbst organisieren ========================= snippet–dates.rst 29.11.2014 Reimar Bauer Folie 13
  9. Zusammenfassung reST ist durch sphinx und Wikis schon bekannt Texte

    können leicht editiert werden commit und publish ergeben Versionskontrolle WSGI APP und online 29.11.2014 Reimar Bauer Folie 14