Einstellen eines uWSGI

Django, Flask, Bottle, WSGI, CGI…
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Okey, prima. Wo die static files hinmüssen habe ich in den docs nicht gefunden. Frage mal den Support.
Danke.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hallo,

mir ist noch nicht ganz klar, woher der Webserver weiß, welcher Teil von der Antwort auf einem request "dynamisch" und was "statisch" ist?

Also wenn ich in meinem Template ein paar Bilder in einer Schleife "dynamisch" rendere. Werden dann die Bilder statisch oder dynamisch ausgeliefert?

static liegt auf dem Webserver.

Code: Alles auswählen

        
 {% for image in images: %}
        <img src="{{ url_for('static', filename=image)}}"/>
 {% endfor %}
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du renderst keine Bilder. Du renderst HTML. Das URLs enthält. Und deren Pfad entscheidet, ob statisch oder dynamisch. Denn von dem hängt es doch ab, welcher Server die ausliefert.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
mir ist noch nicht ganz klar, woher der Webserver weiß, welcher Teil von der Antwort auf einem request "dynamisch" und was "statisch" ist?
Du hast immer noch ein Verständnisproblem mit WSGI bzw. wie das abläuft.

Der Server sieht nichts von der "Dynamik". Der Server liefert die Daten, die er bekommt. Ob die Daten von einer Template-Engine kommen, die die Dynamik enthält oder aus einer HTML / CSS / JS / PNG / JPG Datei, ist (dem Server) gleich. Dem Browser ist das auch gleich, solange das valides HTML/CSS/JavaScript ist bzw. valide Bild-Daten sind.

Der "Trick" bei WSGI ist ja, dass du eine Python-Funktion an eine URL bindest. Diese Funktion liefert dann die Daten. Statisch Inhalte sind nichts anderes als Dateien, die auf dem Server liegen und aus HTML heraus abgerufen werden, halt über die URL zur Datei.

Du könntest auch Bilder dynamisch liefern. Z.B. kann du eine URL an eine Funktion bindet, die dynamisch ein Diagramm mit z.B. Matplotlib zeichnet, dass dann als PNG zurück geliefert wird. Die Funktion muss "nur" sicherstellen, dass das eine valide PNG-Datei ist und du musst dich noch drum kümmern, dass die Header richtig gesetzt werden, damit der Browser das auch als PNG-Daten erkennt. Ein Beispiel hast du z.B. hier: https://stackoverflow.com/questions/507 ... b-in-flask.

Das heißt nicht, dass du deine Bilder so ausliefern sollst (wäre nämlich unnötig kompliziert!), sondern das _du_ als Programmierer der Applikation entscheidest, was dynamisch und was statisch ausgeliefert wird. Wo die statischen Dateien auf dem Server liegen kannst auch du entscheiden, du musst halt in den HTML-Dateien bzw. deinen Templates die URL richtig setzen.

Gruß, noisefloor
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Okey, danke.

Und in welchem Ordner die statics liegen konfiguriert dann der Admin?
Weil sonst könnte man ja auch einfach auf die App von draußen zugreifen, weil die ja physisch auch auf dem Webserver liegt, oder?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn der Webserver statischen Inhalt ausliefert aus einem Pfad, in dem Python liegt - ja. Tut der das? Dann nein.
Antworten