Flask - CSS lät nicht bei Template Vererbung

Django, Flask, Bottle, WSGI, CGI…
Antworten
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Moin,

ich probiere mich gerade an Flask aus. Ich habe ein HTML Dokument namens nav_bar.html in dem mein Menu gespeichert ist und über Template Vererbung will ich es mit anderen HTML Dokumenten verbinden, wie z.B. mit home.html. Das funktioniert auch erstmal ganz gut, nur ist das Dokument home.html von der Formatierung der CSS Datei style.css unberührt. Nav_bar.html verbindet sich problemlos mit CSS.
Seltsamerweise wird die Einstellung der Seitenränder für home.html übernommen, der Rest aber nicht.
Hier meine Dokumente.

Python Skript

Code: Alles auswählen

from flask import Flask, render_template


app = Flask(__name__)


@app.route('/')
def index():
    return render_template('home.html')


@app.route('/ueber_mich/')
def ueber_mich():
    return render_template('lebenslauf.html')


@app.route('/impressum/')
def impressum():
    return render_template('impressum.html')


if __name__=='__main__':
    app.run(debug=True)

nav_bar.html

Code: Alles auswählen

<!DOCTYPE html>

<html>

<head>
  <meta charset="UTF-8">
  <meta charset="ISO-8859-1">
  <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='styles/style.css') }}">
  <title>Schweinereien mit Daten</title>
</head>

<body>
  <!--Navigationsbar-->
    <div class="navbar">
        <ul class="nav_liste">
            <li class="nav_eintrag"><a class="nav_link" href="{{ url_for('index') }}">HOME</a></li>
            <li class="nav_eintrag"><a class="nav_link">PROJEKTE</a></li>
            <li class="nav_eintrag"><a class="nav_link">REPOSITORIES</a></li>
            <li class="nav_eintrag"><a class="nav_link">KRAM</a></li>
            <li class="nav_eintrag"><a class="nav_link" href="{{ url_for('ueber_mich') }}">ÜBER MICH</a></li>
            <li class="nav_eintrag"><a class="nav_link" href="{{ url_for('impressum') }}">IMPRESSUM</a></li>
        </ul>
    </div>
    
    <!--Hauptbild-->
    <img src="../static/mathematics-3821034_pixaboy_cropped.jpg" alt="Main-Pic" width="100%"> 


    <!--Container für den Content-->
    {% block content %}
        
    {% endblock %}
    

    <!--In case of deactivated JavaScript-->
    <noscript>
        <p>JavaScript is necessary!<br>
        Activate JavaScript in the settings of your browser.</p>
    </noscript>
  
</body>

</html>
home.html

Code: Alles auswählen

{% extends "nav_bar.html"%}

{% block content %}

<div class="content">
    <p>Hier muss noch viel mehr inhalt hin!!!</p>
</div>

{% endblock %}
style.css

Code: Alles auswählen

body {
  font-family: "SF Pro Text","Myriad Set Pro","SF Pro Icons","Helvetica Neue","Helvetica","Arial",sans-serif;
  color:#1E1E1E;
  background-color:#fafafa;
  margin:0px;
  padding:0px;
}

h1 {
  font-family: "SF Pro Text","Myriad Set Pro","SF Pro Icons","Helvetica Neue","Helvetica","Arial",sans-serif;
  font-size: 300px;
}

h2 {
  font-family: "SF Pro Text","Myriad Set Pro","SF Pro Icons","Helvetica Neue","Helvetica","Arial",sans-serif;
  font-size: 25px;
}

h3 {
  font-family: "SF Pro Text","Myriad Set Pro","SF Pro Icons","Helvetica Neue","Helvetica","Arial",sans-serif;
  font-size: 22px;
}

h4 {
  font-family: "SF Pro Text","Myriad Set Pro","SF Pro Icons","Helvetica Neue","Helvetica","Arial",sans-serif;
  font-size: 20px;
}

p {
  font-family: "SF Pro Text","Myriad Set Pro","SF Pro Icons","Helvetica Neue","Helvetica","Arial",sans-serif;
  font-size: 16px;
}


/*Text in case of NoScript*/
noscript {
  font-size: 16px;
  color: red;
}


/*Unsortierte horizontale Liste zur Navigation*/
.nav_liste {
  list-style-type: none;
  text-align: center;
  background-color: #2cbe58;
  cursor: pointer;
  padding-top:15px;
  padding-bottom:15px;
  margin: 0px;
}

.nav_eintrag {
  display: inline;
  font-size: 14px;
  letter-spacing: 0.2em;
  padding-left:20px;
  padding-right:20px;
  margin:0px;
  color: #30bb5a;
}

.nav_link:link {
  color:#BBBBBB;
  text-decoration: none;
}

.nav_link:visited {
  color:#BBBBBB;
  text-decoration: none;
}

.nav_link:active {
  color:#BBBBBB;
  text-decoration: none;
}

.nav_link:hover {
  color:#BBBBBB;
  text-decoration: none;
}

.nav_link:focus {
  color:#BBBBBB;
  text-decoration: none;
}


/*Hauptbereich*/
.content {
  margin-top: 0px;
  margin-left: 150px;
  margin-right: 150px;
  background-color: brown;
  padding-top:0px;
  padding-left:10px;
  padding-right:10px;
}

.content h1 {
  font-family: "SF Pro Text","Myriad Set Pro","SF Pro Icons","Helvetica Neue","Helvetica","Arial",sans-serif;
  font-size: 80px;
}

.content h2 {
  font-family: "SF Pro Text","Myriad Set Pro","SF Pro Icons","Helvetica Neue","Helvetica","Arial",sans-serif;
  font-size: 25px;
}

.content h3 {
  font-family: "SF Pro Text","Myriad Set Pro","SF Pro Icons","Helvetica Neue","Helvetica","Arial",sans-serif;
  font-size: 22px;
}

.content h4 {
  font-family: "SF Pro Text","Myriad Set Pro","SF Pro Icons","Helvetica Neue","Helvetica","Arial",sans-serif;
  font-size: 20px;
}

.content p {
  margin:0px;
  padding:0px;
  font-size:16px;
  color:green;
}
Cache hatte ich schon mal gelöscht. Weiß einer von euch Rat. Ich bin echt am Verzweifeln

Gruß und Danke im Voraus
Sirius3
User
Beiträge: 17746
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie sieht Deine Verzeichnisstruktur aus?
Was sagt denn die Debug-Ausgabe?
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Moin,

mein Verzeichnis sieht aus wie folgt:

Projekt
--->app.py
--->static
------>mathematics-3821034_pixaboy_cropped.jpg (Bild für nav_bar.html)
------>styles
--------->style.css

Ordner sind feet gedruckt und Dateien kursiv.
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Weiß noch wer Hilfe?
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Eins vergaß ich noch, die Debug-Ausgabe gibt keine Fehler aus.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Wird die die styles.css den gefunden und ausgeliefert?
Beim schnellen überfliegen wundert mich nämlich, dass du einmal mit url_for auf static zugreifst - und ein paar Zeilen weiter hart mit "../static".
Wie steht der Pfad zur zur CSS in dem gerenderten HTML?
Sirius3
User
Beiträge: 17746
Registriert: Sonntag 21. Oktober 2012, 17:20

Aber wie sieht die Debugausgabe exakt aus?
Auf den ersten Blick sieht die Verzeichnisstruktur und das url_for richtig aus.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

welche Pfade stehen denn im fertig gerenderten HTML? Das siehst du ja , wenn du im Browser den Seitenquelltext aufrufst (STRG+U im Firefox, beim Chrome weiß ich die Tastenkombi gerade nicht)? Und was passiert, wenn du im HTML der Seite auf den Link zum Stylesheet klickst?

Gruß, noisefloor
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Hallo,

vielen Dank schon mal für eure Antworten.

@Noisefloor, @SparrowWenn ich mir im Browser den HTML Code ansehe, kann ich auch das CSS Dokument sehen und anklicken. Sieht soweit so gut aus. Bedeutet das mein CSS Code ist falsch?

@Sirius
Meinst, dann was ich im Terminal angezeigt bekomme? Dann kann ich nur folgendes lesen.

base) saschagruber@Saschas-MBP SchweinereienMitDaten % source /opt/anaconda3/bin/activate
conda activate flaskenv
(base) saschagruber@Saschas-MBP SchweinereienMitDaten % conda activate flaskenv
/opt/anaconda3/envs/flaskenv/bin/python /Users/saschagruber/Documents/Web_Apps/SchweinereienMitDaten/app.py
(flaskenv) saschagruber@Saschas-MBP SchweinereienMitDaten % /opt/anaconda3/envs/flaskenv/bin/python /Users/saschagruber/Documents/Web_Apps/SchweinereienMitDaten/app.py
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 225-112-672
127.0.0.1 - - [10/Feb/2021 15:26:55] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [10/Feb/2021 15:26:55] "GET /static/styles/style.css HTTP/1.1" 200 -
127.0.0.1 - - [10/Feb/2021 15:26:55] "GET /static/mathematics-3821034_pixaboy_cropped.jpg HTTP/1.1" 200 -
127.0.0.1 - - [10/Feb/2021 15:28:46] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [10/Feb/2021 15:28:50] "GET /static/styles/style.css HTTP/1.1" 200 -
Sirius3
User
Beiträge: 17746
Registriert: Sonntag 21. Oktober 2012, 17:20

Da steht doch "GET /static/styles/style.css HTTP/1.1" 200, also der css-Style wird geladen, und wie ich schon schrieb, bei meinem Test wird auch alles scheußlich bunt im Browser angezeigt. Was also wird nicht so angezeigt, wie Du es erwartest?
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Da ich selbst schon mal drüber gestolpert bin: Ggf. mal den Cache leeren bzw. die Seite mit Ctrl/Shift + F5 neu laden.
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

@Sirius
Ich ging auch davon aus, dass die CSS lädt, weil der Seitenrand in der Anzeige stimmt. Was fehlt in dem Beispiel ist, dass der Schriftzug "Hier muss noch viel mehr inhalt hin!!!" nicht grün angezeigt wird. Auch auf Änderungen der Schriftgröße bleibt alles unverändert.

@einfachTobi
Den Cache hatte ich schon mal geleert. Hatte mir leider nichts gebracht. Muss man da was spezielles beachten?
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Mir geht's wie Sirius3: Scheusslich bunt. Und die Schrift ist bei mir an der entsprechenden Stelle auch grün auf braunem Hintergrund.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Es ist zum Mäuse melken. Ich habe jetzt dreimal den Cache gelehrt, zweimal den Mac neugestartet und eben nochmal Chrome installiert, um es da zu probieren. Hat alles nichts geholfen. :(

Die Farben sind damit ich gleich den Unterschied erkennen kann ;)
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Ich habe jetzt nochmal Flask ge-updated. Irgendwie scheint es jetzt zu funktionieren :shock:
Kann es irgendwie an jinja gelegen haben?
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

So generell nicht, aber wie sieht/sah das denn mit Caching auf Serverseite aus?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

ich weiß nicht genau, was du damit meinst?
Ich bin noch sehr unerfahren mit Webframeworks.
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@MacGruber: Ich bin jetzt gerade zu faul nachzusehen ob Jinja selbst oder Flask Templates cached. Die meisten Template-Enginges nehmen ja das Template und machen daraus Python(-Byte)code und cachen solche kompilierten Templates dann auch im RAM.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten