/ / Wie füge ich ein <script> -Tag auf einer Django-Admin-Seite ein - javascript, python, django

Wie füge ich ein <script> -Tag auf einer Django-Admin-Seite ein - javascript, python, django

Ich versuche JavaScript-Pickup eine Variable zu habenaus dem Django Admin-Kontext gesetzt. Das "Original" -Objekt ist bereits da und ist das Modellobjekt, das ich brauche. Aber ich muss den Objektnamen in eine Variable bringen, die ich in meinem JavaScript verwenden kann.

<script>
var className = "{{ original.__class__.__name__ }}";
</script>

Ich habe einen Inline- und einen Model-Admin, den ich verwenden kanndafür, aber die Media-Klasse wird nur Dateien aufnehmen. Was ich brauche, ist eine Möglichkeit, den obigen Code in eine Admin-Vorlage einzufügen, ohne die Vorlage selbst zu überschreiben. Das Überschreiben der Vorlage erfordert, dass ich weiß, wo genau mein Code liegt, den ich nicht kenne, da dieser Code Teil eines Pakets ist.

Gibt es eine Möglichkeit zur dynamischen Aktualisierung der TEMPLATE_DIRS Einstellungsobjekt? Wenn ja, dann könnte ich die Template-Methode verwenden, um mein Problem zu beheben.

Antworten:

1 für die Antwort № 1

Eine Möglichkeit, dies zu erreichen, besteht darin, Ihre Admin-Vorlagen zu überschreiben. Nun solltest du ein erstellen Virtualenv und installiere Python und Django darin.

Danach können Sie Ihren Django-Pfad herausfinden, indem Sie eine Python-Konsole öffnen mit: python

Gib folgendes in die Konsole ein:

import sys
sys.path = sys.path[1:]
import django
print(django.__path__)

Dies gibt den Pfad Ihrer Django-Installation aus. Wenn Sie ein virtualenv verwenden, ist es normalerweise etwas wie:

~ / meinprojekt / env / lib / pythonX.X / site-packages / django

Die Admin-Vorlagen befinden sich also in:

~ / meinprojekt / env / lib / pythonX.X / site-packages / django / beitrag / admin / templates / admin

Dort können Sie wie in normalen Django-Vorlagen ein Skript-Tag hinzufügen.

Beachten Sie, dass der virtualenv nur eine Empfehlung ist. Sie müssen es nicht verwenden, aber es ist normalerweise besser, da es nicht alle Python / Django-Projekte betrifft, sondern nur das, für das Sie das env verwenden.