Zusammenfassung verweisen:Wie statische Dateien in einer Lenker-django Vorlage
Wie soll ich Referenz statische Dateien in einem Lenker-Teil in einer django Vorlage? Ich kann Lenker verwenden, wenn ich verbatim
Tags benutze, aber dann kann ich Djangos static
Tag nicht verwenden.
Einzelheiten
Während eine App Django Umwandlung, stieß ich auf einen Teil, das handelbars.js
für das Rendering Ajax-call-Ergebnisse verwendet. Via, unter anderem, "Handlebars.js in Django templates" Ich habe herausgefunden, über die {% verbatim %}
Tag.
Ein einfaches Stück Lenker funktioniert gut mit diesem. Aber ich habe auch einen Teil, in dem Bild wird dynamisch auf der Basis des Ergebnis dargestellt, die etwa wie folgt aussieht:
<img src="path/{{ result }}.png">
Jetzt, während dies funktioniert gut, wenn ich den Pfad manuell einstellen, ich glaube an Django ist es gute Praxis, Referenz Ihre statischen Dateien wie folgt:
<img src="{% static 'path/file.png' %}">
nur immer eine static_url
konstante wird nicht empfohlen, see for instance this blog
also, wenn jemand einen echten zwingenden Grund hat, es zu beheben sonst, ich glaube, es am besten ist, die verwenden {% static %}
Methode.
Die naive Lösung wäre, die 2 Techniken zu kombinieren und die Vorlage buchstäblich mit Verbatim/Endverbatim zu besprühen. Abgesehen davon, dass dies hässlich, unleserlich und von Anfang an eine schlechte Idee ist, funktioniert es auch nicht.
{% verbatim %}
<!-- handlebars -->
{% endverbatim %}
<img src="{% static 'path{% verbatim %}{{ result }}{% endverbatim %}' %}">
{% verbatim %}
<!-- handlebars -->
{% endverbatim %}
Dieser endet in Tränen, als das Ergebnis ist
TemplateSyntaxError at/
konnte der Rest nicht analysieren: '' path {% 'aus '' path {%'
Es könnte möglich sein, die korrekte statische URL auf der Backend-Seite zu generieren und diese zu rendern. Das Back-End sollte jedoch nicht wissen, welches Bild in der Vorlage angezeigt werden soll.
Die einzige Lösung könnte sein, einen zusätzlichen Aufruf des Backends mit der 'relativen' Zeichenfolge (z. B. path/result.png
) an das Backend zu machen und nach der korrekten statischen Verbindung zu fragen? Das ist nicht so schwer, erfordert aber einen zusätzlichen Anruf, was nicht der Fall sein sollte.
Wie kann ich diese statischen Dateien korrekt referenzieren?
Die Argumente gegen die Verwendung von 'STATIC_URL' in dem Blogpost, auf den Sie verweisen, scheinen für Ihren Anwendungsfall nicht relevant zu sein. In der Tat würde ich das Gegenteil argumentieren, weil Sie explizit nur das statische URL-Präfix wollen. Der Rest der URL (der Dateinamensabschnitt) wird auf der Clientseite von Ihrer Lenkervorlage generiert. Beachten Sie auch, dass es ein Vorlage-Tag ['get_static_prefix'] (https://docs.djangoproject.com/de/1.9/ref/templates/builtins/#get-static-prefix) gibt, das' STATIC_URL' für Sie umschließt. – solarissmoke
Ich bin mir nicht sicher, ob ich dem zustimme. Ich möchte einen variablen Teil eines Bildes (der Name Teil), der von JSON kommt, und wird von Lenkstangen geparst. Aber dieses Bild wird von django als statische Datei geliefert, also möchte ich, dass django entscheidet, was dort eigentlich passieren würde. Es gibt keinen Grund, dass Caching-Beispiel in der Unterseite des Links in meiner Situation nicht gültig ist -> Wenn ich sie zwischenspeichern möchte dann würde Lenker nicht darüber wissen. Am Ende würden die Lenker nur über den "relativen" Teil der statischen Datei Bescheid wissen, und soweit ich sehen kann, sind alle Argumente in diesem Blog relevant? – Nanne
Dann ist es wichtig, richtige statische URL-Generierung für den JSON zu verwenden? Ich sehe nicht, wie es für das Lenker-Template hilft, wenn der tatsächliche Dateipfad (was Caching/anderes Speicher-Backend/etc ändern würde) eine generierte Client-Seite ist. – solarissmoke