Ich rendere eine Vorlage, die ich mit einem externen Stylesheet zu stylen versuche. Die Dateistruktur ist wie folgt.
/app
- app_runner.py
/services
- app.py
/templates
- mainpage.html
/styles
- mainpage.css
mainpage.html sieht so aus
<html>
<head>
<link rel= "stylesheet" type= "text/css" href= "../styles/mainpage.css">
</head>
<body>
<!-- content -->
Keiner meiner Stile wird jedoch angewendet. Hat das etwas damit zu tun, dass das HTML eine Vorlage ist, die ich rendere? Die Python sieht so aus.
return render_template("mainpage.html", variables..)
Ich weiß, dass so viel funktioniert, weil ich die Vorlage immer noch rendern kann. Als ich jedoch versuchte, meinen Styling-Code von einem "Style" -Block innerhalb des HTML-Tags "head" in eine externe Datei zu verschieben, verschwand das gesamte Styling und hinterließ eine leere HTML-Seite. Hat jemand Fehler mit meiner Dateistruktur gesehen?
<script src="{{ url_for('static',filename='javascriptFileName.js') }}"> </script>
Verwenden Sie in jinja2-Vorlagen (die von der Flasche verwendet werden)
Die
static
Dateien befinden sich jedoch normalerweise imstatic
Ordner, sofern nicht anders konfiguriert.quelle
Ich habe mehrere Threads gelesen und keiner von ihnen hat das Problem behoben, das die Leute beschreiben, und ich habe es auch erlebt.
Ich habe sogar versucht, mich von conda zu entfernen und pip zu verwenden, um auf Python 3.7 zu aktualisieren. Ich habe alle vorgeschlagenen Codierungen ausprobiert und keine davon behoben.
Und hier ist warum (das Problem):
Standardmäßig durchsuchen Python / Flask die Statik und die Vorlage in einer Ordnerstruktur wie:
Sie können dies selbst mit dem Debugger auf Pycharm (oder einem anderen Element) überprüfen, die Werte in der App überprüfen (app = Flask ( Name )) und nach teamplate_folder und static_folder suchen
Um dies zu beheben, müssen Sie die Werte beim Erstellen der App wie folgt angeben:
Der Pfad TEMPLATE_DIR und STATIC_DIR hängt davon ab, wo sich die Datei-App befindet. In meinem Fall, siehe Bild, befand es sich in einem Ordner unter src.
Sie können die Vorlage und die statischen Ordner nach Ihren Wünschen ändern und sich in der App = Flask ... registrieren.
In Wahrheit habe ich das Problem beim Herumspielen mit Ordnern festgestellt und manchmal auch nicht gearbeitet. Dies behebt das Problem ein für alle Mal
Der HTML-Code sieht folgendermaßen aus:
Dies ist der Code
Hier die Struktur der Ordner
quelle
Ich verwende gerade Version 1.0.2 von flask. Die obigen Dateistrukturen haben bei mir nicht funktioniert, aber ich habe eine gefunden, die wie folgt funktioniert:
(Bitte beachten Sie, dass 'statisch' und 'Vorlagen' Ordner sind, die genau den gleichen Namen haben sollten.)
Um zu überprüfen, welche Version der Flasche Sie ausführen, sollten Sie Python im Terminal öffnen und Folgendes entsprechend eingeben:
quelle
Haben Sie immer noch Probleme, nachdem Sie die von codegeek bereitgestellte Lösung befolgt haben :
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles/mainpage.css') }}">
?In Google Chrome werden durch Drücken der Schaltfläche zum erneuten Laden (F5) die statischen Dateien nicht neu geladen. Wenn Sie der akzeptierten Lösung gefolgt sind, aber die an CSS vorgenommenen Änderungen immer noch nicht sehen, drücken Sie
ctrl + shift + R
, um zwischengespeicherte Dateien zu ignorieren und die statischen Dateien neu zu laden.In Firefox wird durch Drücken der Schaltfläche zum erneuten Laden die statischen Dateien neu geladen.
Wenn Sie in Edge die Schaltfläche Aktualisieren drücken, wird die statische Datei nicht neu geladen. Durch Drücken
ctrl + shift + R
von werden zwischengespeicherte Dateien ignoriert und die statischen Dateien neu geladen. Dies funktioniert jedoch nicht auf meinem Computer.quelle
Die Kolbenprojektstruktur ist unterschiedlich. Wie Sie in Frage gestellt haben, ist die Projektstruktur dieselbe, aber das einzige Problem ist der Stilordner. Der Ordner "Stile" muss sich im statischen Ordner befinden.
quelle
Ein weiterer Punkt, den Sie diesem Thread hinzufügen sollten.
Wenn Sie Ihrem CSS-Dateinamen einen Unterstrich hinzufügen, funktioniert dies nicht.
quelle
Noch ein Punkt zum Hinzufügen. Stellen Sie neben den oben genannten Antworten sicher, dass die folgende Zeile zur
app.py
Datei hinzugefügt wird:Andernfalls kann der Kolben keinen statischen Ordner erkennen.
quelle
Wenn eine der oben genannten Methoden nicht funktioniert und Ihr Code perfekt ist, versuchen Sie eine Aktualisierung, indem Sie Strg + F5 drücken. Es werden alle Chaces gelöscht und die Datei neu geladen. Es hat bei mir funktioniert.
quelle
Ich bin mir ziemlich sicher, dass es der Laravel-Vorlage ähnlich ist. So habe ich meine gemacht.
Weitergeleitet: CSS-Dateipfadproblem
Einfache Kolbenanwendung, die ihren Inhalt aus einer HTML-Datei liest. Externes Stylesheet blockiert?
quelle