Pfad zur Grafik

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

Ich habe in meiner app "core" im Ordner "templates/core" das template "grafik.html" von diesem aus, möchte ich eine Grafik aufrufen:

Code: Alles auswählen

{% load static %}
<img src="{% static  {{parameter.object}} %}" height="200" width={{parameter.breite}} alt="Grafik">
die Grafik "skat.png" liegt in der app "core" im Ordner "static"
und den Pfad zur Grafik übergebe ich aus dem view mit:

Code: Alles auswählen

parameter = {'name': 'core/grafik.html', 'object': 'grafik/skat.png', 'breite': 400}
aber, wenn wundert es, das mit

Code: Alles auswählen

"{% static  {{parameter.object}} %}"
geht natürlich nicht:

Code: Alles auswählen

Could not parse the remainder: '{{parameter.object}}' from '{{parameter.objekt}}'
Nachtrag:
mit den Anführungszeichen in

Code: Alles auswählen

"{% static  '{{parameter.object}}' %}"
verschwindet die Fehlermeldung aber die Grafik wird immer noch nicht gefunden.
Mit

Code: Alles auswählen

"{% static "grafik/skat.png" %}"
geht es aber.
Sirius3
User
Beiträge: 17792
Registriert: Sonntag 21. Oktober 2012, 17:20

Durch die geschweiften Klammern bist Du ja schon in der Template-Sprache von Django, weitere Klammern sind also überflüssig:

Code: Alles auswählen

{% static  parameter.object %}
Benutzeravatar
__blackjack__
User
Beiträge: 13188
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Pitwheazle: Innerhalb von {% %} haben {{ }} keine besondere Bedeutung. Zwischen {% und %} ist man doch schon aus dem normalen Vorlagentext raus und in der Template-Sprache.

Mal zum Vergleich aus Deinem letzten Thema, da hast Du ja auch nicht so etwas hier versucht:

Code: Alles auswählen

  {% for farbe, x, y in {{parameter.kugeln}} %}
      <circle cx={{x}} cy={{y}} r=15 fill={{farbe}} stroke="black" />
  {% endfor %}
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Benutzeravatar
sparrow
User
Beiträge: 4230
Registriert: Freitag 17. April 2009, 10:28

Und: der static-Ordner in einem Projekt oder einer App ist in der Regel der Startpunkt für den Start. Das kannst du auch in deinen anderen Apps gegenprüfen.

Wenn also etwas in derm Verzeichnis /core/static liegt, dann ist die URL nicht /static/core sondern /static.

Du schriebst: die Grafik "skat.png" liegt in der app "core" im Ordner "static"
Also /core/static/skat.png

WIe kommst du darauf, dass dort irgendwo ein Verzeichnis "grafik" gibt?
Wenn deine Beschreibung richtig ist, ist es einfach nur 'skat.png' in static.
Pitwheazle
User
Beiträge: 896
Registriert: Sonntag 19. September 2021, 09:40

Ach wenn ich euch nicht hätte!
Es ist schon so, dass ich auch immer wieder Fortschritte mache - und dann halt wieder einen Teil vergesse :(.
Danke!
Und was ist jetzt der Unterschied zwischen {% %} und {{ }}?
Benutzeravatar
__blackjack__
User
Beiträge: 13188
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Der Unterschied wird auf der ersten Seite der Template-Dokumentation beschrieben. Und ist doch auch irgendwie offensichtlich wenn man sich Templates mal anschaut: {{ }} ist zum Einsetzen von Variablen und {% %} ist für beliebige Logik in Form von Tags.

Die Doku ist an der Stelle absichtlich vage, weil man sich neben den vorhandenen Tags auch selbst welche dazu programmieren kann. {{ endfor }} setzt den Wert von der Variablen `endfor` in das Template ein, während {% endfor %} das Ende einer Schleife kennzeichnet die mit dem ``for``-Tag eingeleitet wird. Das muss man ja irgendwie auseinander halten können. Und Tag-Konstrukte bestehen wie im ``for``-Beispiel manchmal auch aus mehreren Tags um einen Anfang und ein Ende zu kennzeichnen, wo beliebiger Template-Inhalt dazwischen stehen kann. Beispielsweise bei Schleifen oder bedingten Template-Teilen (``if``/``else``/``endif``).
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Antworten