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?
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%(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:
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)
Tags und Links django angularjs gruntjs grunt-usemin django-templates
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%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