Wie kann ich grunt-usemin darüber informieren, Djangos statische Vorlagen-Tags zu ignorieren?

8

Ich baue eine Django-App, die eine einseitige Angular-App unterstützt.

Django serves's Angular's index.html mit dem folgenden usemin script block:

%Vor%

Usemin versucht "{% static" scripts / app.js "%}" auf dem Dateisystem zu finden und scheitert natürlich, weil es eigentlich "scripts / app.js" suchen sollte.

Hat jemand einen Workaround dafür gesehen?

    
davemckenna01 17.08.2013, 15:42
quelle

2 Antworten

9

Okay, ich denke, ich habe einen Workaround. Dies setzt voraus, dass die erstellte Datei auch auf die statische URL für die erstellten Assets zeigen soll.

Dazu müssen Sie eine STATIC_URL für Ihren View-Kontext definieren (anstatt src="{% static 'foo/bar.js' %}" zu verwenden, verwenden Sie src="{{STATIC_URL}}foo/bar.js" ). Ich konnte {% static %} nicht ausführen, ohne die grunt-usemin-Quelle zu hacken.

Also verwenden Sie Ihr Beispiel:

%Vor%

Kompiliert nach:

%Vor%

Um dies zu erreichen, musste ich die folgenden grunt-Konfigurationen hinzufügen (in Gruntfile.js):

%Vor%     
lakenen 20.01.2014 00:14
quelle
3

(Ich behalte diese Frage, wenn ich nach einer Lösung suche, also teile ich einfach die Lösung, die ich hier gefunden habe, damit andere wie ich sie finden können.)

Ich habe gerade ein Grunt-Plugin namens grunt-bridge entdeckt, das statische Dateien in eine html-Vorlage mit dem Wrapper einbinden kann static -Tag. Die Dokumentation ist nicht großartig, aber ich habe mir gedacht, wie ich sie für mein Projekt einsetzen kann.

Wenn Sie solche Skripte haben:

%Vor%

Und die endgültige Ausgabe gibt es so aus:

%Vor%

Installieren Sie gruntbridge mit npm install grunt-bridge --save-dev und Fügen Sie eine solche Konfiguration in der grunt.initConfig der Gruntfile.js hinzu:

%Vor%

Dabei ist <%= yeoman.minifiedDir %> das Ausgabeverzeichnis der endgültigen verkleinerten HTML-Dateien und <%= yeoman.minifiedDir %> das Zielvorlagenverzeichnis. Ersetzen Sie adjangoappname durch den Namen Ihrer Django-App oder eines anderen Verzeichnispräfixes, das Sie haben möchten.

Fügen Sie dann grunt-bridge zuletzt in der RegisterTask-Liste wie folgt hinzu:

%Vor%

(Ich denke, es ist möglich, die Konfiguration kompakter zu machen, aber dies ist die erste Methode, die ich entdeckt habe, die funktioniert hat)

    
Stein G. Strindhaug 20.06.2014 06:57
quelle
Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ tag123jaxb ___ Java-Architektur für XML-Binding ist der Java-Standard für die Arbeit mit XML als Domänenobjekte. Es bietet einen einfachen Mechanismus zum Zuordnen von Java-Klassen zu XML-Darstellungen. ___ tag123annotations ___ Bei der Programmierung werden Annotationen verwendet, um einem Codeelement Informationen hinzuzufügen, die nicht vom Typsystem ausgedrückt werden können. ___ answer17818403 ___

Wenn Sie %code% aus Klassen erstellen, müssen Sie die Klasse %code% in die Klassen einfügen, die übergeben wurden, um %code% zu erstellen.

%Vor%

Wenn Ihr Modell aus einem XML-Schema generiert wird, würde ich empfehlen, %code% für den Paketnamen zu erstellen:

%Vor%     
___ qstntxt ___

Ich habe den folgenden Fehler beim Ausführen des Projekts an der Eingabeaufforderung mit

erhalten %Vor%

Ich habe den folgenden Fehler erhalten

%Vor%

Quelle: com / javavids / jaxb / sitemap / UPM / Test.java

%Vor%

Quelle: com / javavids / jaxb / sitemap / UPM / ObjectFactory.java

%Vor%

Quelle: com / javavids / jaxb / sitemap / main / Main.java

%Vor%

HINWEIS: Der Code funktioniert auf meinem Eclipse einwandfrei. Aber wenn ich versuche, an der Eingabeaufforderung zu laufen, wirft es und Ausnahme

    
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___