Pfad für STATIC_ROOT

Django, Flask, Bottle, WSGI, CGI…
Antworten
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

collectstatic sammelt die staticfiles nach den settings.py in "STATIC_ROOT = BASE_DIR / "staticfiles"" also in dem Ordner "staticfiles" im Rootverzeichnis meines Projektes. Bei Uber liegt mein Projekt in "~rechentrainer" und meine staticfiles in "~html/staticfiles" - wie muss ich meinen Pfad in den settings.py ändern, damit er die staticfiles dort sammelt?
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

so ist das nicht gedacht. STATIC_ROOT liegt normalerweise in deinem Projektverzeichnis. Mittels collectstatic werden alle statischen Dateien deiner Apps inkl Unterverzeichnissen da gesammelt und dann kopierst du alles ins passende Verzeichnis auf den Webserver. Das musst du halt bei jedem Deploy noch. machen, wenn sich statische Dateien geändert haben.

Gruß, noisefloor
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

OK, habe ich so gemacht. Es wäre aber doch einfacher wenn collectstatic die Dateien direkt in das richtige Verzeichnis packen würde und ich sie nicht nochmal verscheiben müsste. Sehe ich das richtig, dass alle Inhalte meiner static Ordner und auch der staticfiles-Ordner, den collectstaic anlegt dann eigentlich im Rootordner auf uberspace keine Funktion haben?
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Pitwheazle: Dazu müsste man a) die richtigen Rechte haben das in diesen Ordner zu verschieben und b) müsste das ein lokaler Ordner sein. Es ist aber auch nicht ungewöhnlich das dieser engültige Zielordner auf dem Server liegt und nicht auf dem Entwicklungssystem eingebunden ist, und die Dateien per SCP, FTP, oder RSync auf den Server übertragen werden.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Wie du das siehst ist schon korrekt. static_root ist das Verzeichnis, in das "collectstatic" die entsprechenden Dateien verschiebt. Der _kann_ in deinem Projektverzeichnis sein. Muss aber nicht. Im Normalfall ist das ein Verzeicnis, das vom Webserver direkt ausgeliefert wird, ohne dass Python dabei in irgendeiner Weise beteiligt ist. Deshalb macht auch dein Versuch aus dem anderen Thread keinen Sinn, in dem du erst umständlich eine statische Datei liest und dann in einem Response auslieferst. Bei statischen Dateien möchte man gerade genau gar nichts tun.

~ ist *nix für das Home-Verzeichnis des Benutzers.
Also:

Code: Alles auswählen

from pathlib import Path
path = Path.home() / html / staticfiles
Und collectstatic muss natürlich auf dem Server ausgeführt werden, auf dem sowohl das Projekt als auch der Zielpfad verfügbar ist.
Zuletzt geändert von sparrow am Samstag 23. März 2024, 14:50, insgesamt 1-mal geändert.
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Der Zielordner liegt ja auf dem Server (oben stehen die Adressen) und ich habe ja auch die Rechte und kann das per FTP machen. Ich habe noch nicht ausprobiert, ob ich die Daten auch mittels SSH verscheiben kann - sollte aber doch auch gehen. Kann es sein, dass möglicherweise collectstatic mit einem geänderten Link in den settings nicht ausgeführt werden könnte, da dafür nicht die nötigen Rechte vorliegen?
(Was SCP und RSync bedeutet weiß ich mal wieder nicht.)
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

sparrow hat geschrieben: Samstag 23. März 2024, 14:22 Verstehe ich das richtig, dass ich meine Dateien schon "automatisch" an die richtige Stelle bekäme?
Aber wo kommt das hin (in die settings.py?):

Code: Alles auswählen

from pathlib import Path
path = Path.home() / html / staticfiles
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Das steht alles in meinem vorherigen Beitrag.
Antworten