Gibt es eine Möglichkeit, Template-Tags in Javascript- und CSS-Dateien einzufügen? Ich würde es für alles von der Weitergabe von URLs an Media-URL-Links (Bildpfade, etc) zu bedingten Javascript basierend auf Benutzerberechtigungen verwenden.
Ich hatte gerade den Gedanken, dass ich es vielleicht so anbieten könnte, als wäre es eine Vorlage, aber ich habe die URL als meine Javascript-Datei. Ist das der einzige Weg, so etwas zu tun? Wenn ja, würde es wahrscheinlich nicht mit meinem Mediengenerator funktionieren, also würde ich wahrscheinlich eine bessere Lösung wünschen, wenn es eine da draußen gäbe.
Wie wäre es mit der Definition der JavaScript-Variablen und CSS-Attribute von innerhalb Ihrer Django-HTML-Vorlage zwischen den Tags script und style ? Ich weiß, dass es sich wie ein Hack anhört, aber es scheint mir ein sauberer zu sein, da Sie damit Ihre dynamischen Variablen von einem Punkt aus steuern können.
Deine Idee ist der richtige Weg. Wenn Sie die Vorlagenwerkzeuge von Django nutzen möchten, besteht der einfachste Weg darin, die JS-Datei als Vorlage bereitzustellen. Siehe diese Frage für eine Situation wie die Ihre.
Sie können jede Art von Inhalt wie eine Vorlage bereitstellen, es muss nicht HTML sein. Je nach Konfiguration können Sie jedoch den Rest Ihres statischen Inhalts möglicherweise nicht bereitstellen.
Eine Option, wenn Sie nur Dinge wie Medien-URLs ersetzen möchten, besteht darin, diese Vorlagen in statische Dateien zu "kompilieren", die Sie bereitstellen können. Dies funktioniert jedoch nicht für etwas, das aufgrund der Berechtigungen des aktuellen Benutzers bedingt ist. Sie müssen ein Skript schreiben, um django.template.loader.render_to_string
aufzurufen, und das Ergebnis jedes Mal in eine Datei schreiben, wenn Sie Medien-URLs bereitstellen oder ändern usw.
Was dynamischen Inhalt in JS-Dateien anbetrifft, müssten Sie eine Vorlage machen, wie die anderen sagten.
Sie können JS- und CSS-Dateien jedoch sehr einfach mit django-sekizai an bestimmte Seitenvorlagen anhängen. (Ich benutze es als Teil von Django-cms, aber es funktioniert auch alleine.)
Es ermöglicht Ihnen, innerhalb einer normalen Seitenvorlage die erforderlichen statischen Ressourcen der Vorlage in einem Block zu definieren. Es gibt einen Block für CSS und einen für JS. Diese Blöcke können dann in Ihrer base.html gedruckt werden. Es verarbeitet auch Duplikate, sodass Sie sich keine Gedanken darüber machen müssen, dieselben Dateien mehrmals hinzuzufügen. Weitere Informationen finden Sie im Nutzungsdokument .
Mit diesem System senden Sie kein eingeschränktes JS oder CSS, da django nur autorisierte Vorlagen ausführt und der Inhalt niemals den JS- und CSS-Blöcken hinzugefügt wird.
Tags und Links django javascript css django-templates