Frage django 1.5 - Wie man Variablen im statischen Tag benutzt


Ich migriere derzeit alle Referenzen auf statische Dateien in meinem Projekt auf das neue {% static%} - Tag, das django 1.5 eingeführt hat, aber ich habe ein Problem, an einigen Stellen verwende ich Variablen, um den Inhalt zu erhalten. Mit dem neuen Tag kann ich nicht, gibt es eine Möglichkeit, das zu lösen?

Aktueller Code:

<img src="{{ STATIC_URL }}/assets/flags/{{ request.LANGUAGE_CODE }}.gif" alt="{% trans 'Language' %}" title="{% trans 'Language' %}" />

Was es sein sollte (das geht nicht):

<img src="{% static 'assets/flags/{{ request.LANGUAGE_CODE }}.gif' %}" alt="{% trans 'Language' %}" title="{% trans 'Language' %}" />

75
2018-05-20 18:24


Ursprung


Antworten:


Sie sollten in der Lage sein, Strings mit dem zu verketten add Vorlagenfilter:

{% with 'assets/flags/'|add:request.LANGUAGE_CODE|add:'.gif' as image_static %}
  {% static image_static %}
{% endwith %}

Was du versuchst zu tun, funktioniert nicht mit dem static Template-Tag, da es nur eine Zeichenfolge oder nur eine Variable benötigt:

{% static "myapp/css/base.css" %}
{% static variable_with_path %}
{% static "myapp/css/base.css" as admin_base_css %}
{% static variable_with_path as varname %}

114
2018-05-20 18:45



Ein saubererer Weg ist es, die Variable {% static%} als Variable vom Anfang des HTML zu setzen, so dass wir sie beliebig verwenden können.

{% load static %}
{% static "" as baseUrl %}
<img src="{{ baseUrl }}/img/{{p.id}}"></img>

18
2018-03-03 03:37



Ich habe das funktioniert, indem ich eine leere Zeichenfolge für den statischen Pfad verwende und dann meine Variablen in einem eigenen Abschnitt verwende:

<a href= "{% static "" %}{{obj.a}}/{{obj.b}}/{{obj.c}}.gz" >Name</a>

10
2018-03-13 07:47



@rounin, kannst du zumindest benutzen

{% get_static_prefix %} 

welches geladen wird wenn du {% load static%}. Es ist nur natürlicher als {% static ''%} :)


10
2018-05-18 18:21



Für was es wert ist, denke ich, das ist der einfachste Weg:

<img src="{% static 'assets/flags/'|add:request.LANGUAGE_CODE|add:'.gif' %}" ... >

Das ist eine alte Frage und ich bin nicht sicher, ob diese Methode damals durchgeführt werden könnte. Aber jetzt, in Django 2.0, scheint das für mich gut zu funktionieren.


1
2018-03-28 04:45