So verwenden Sie die Variablen aus „views.py“ in JavaScript, „” in der Django-Vorlage?

Lesezeit: 3 Minuten

Benutzeravatar von AlMcLean
AlMcLean

Wenn ich eine Seite mit dem Django-Vorlagenrenderer rendere, kann ich eine Wörterbuchvariable mit verschiedenen Werten übergeben, um sie auf der Seite zu manipulieren {{ myVar }}.

Gibt es eine Möglichkeit, in Javascript auf dieselbe Variable zuzugreifen? <script></script> (Vielleicht mit dem DOM, ich weiß nicht, wie Django die Variablen zugänglich macht)? Ich möchte in der Lage sein, Details mithilfe einer AJAX-Suche basierend auf den Werten in den übergebenen Variablen nachzuschlagen.

  • Beachten Sie jedoch, dass diese Lösung gemäß dieser Lösung anfällig für Injektionsangriffe ist

    – Casebash

    13. Juni 2010 um 6:13

  • @Casebash: Für solche Anlässe escapejs Filter existiert: escapejs('<>') -> u'\\u003C\\u003E'

    – Tomasz Zieliński

    23. August 2011 um 10:54


  • Nur um dies als Referenz zu ergänzen: Wenn „someDjangoVariable“ zufällig JSON ist, stellen Sie sicher, dass Sie {{ someDjangoVariable|safe }} verwenden, um das „someDjangoVariable|safe }} zu entfernen.“

    – Markieren

    7. Februar 2012 um 14:39

  • Was ist, wenn das Javascript in eine andere Datei geschrieben ist?

    – der_unbekannte_Geist

    15. November 2016 um 7:05 Uhr

  • 10 Jahre später hat Django genau zu diesem Zweck einen integrierten Vorlagenfilter eingeführt: docs.djangoproject.com/en/2.1/ref/templates/builtins/…

    – Jon Sakas

    19. Januar 2019 um 19:55 Uhr

  • Das ist schön, weil dadurch nur einige Eingabevariablen der Django-Vorlage in Javascript kopiert werden können und der serverseitige Code nicht wissen muss, welche Datenstrukturen von Javascript verwendet und daher vor dem Rendern der Django-Vorlage in JSON konvertiert werden müssen. Entweder verwenden Sie dies oder kopieren Sie immer alle Django-Variablen nach Javascript.

    – Alan Evangelista

    20. November 2014 um 19:22 Uhr

  • Aber beachten Sie: stackoverflow.com/questions/23752156/…

    – Ciro Santilli OurBigBook.com

    3. Juni 2016 um 14:12

  • @JorgeOrpinel Nein, das ist nicht dasselbe. safe Markiert den Wert nur als sicher, ohne ordnungsgemäße Konvertierung und Escape.

    – Jaroslawischer Administrator

    30. Mai 2017 um 10:52

  • Wie zeigt man dann die Variable in der Django-Vorlage an?

    – kbdev

    14. Juni 2017 um 17:33

  • @Sandi Als ich es gepostet habe, war es üblich, ein Widget in einer separaten JS-Datei zu haben und es im Quellcode der Seite zu initialisieren. Nehmen wir also an, Sie erklären function myWidget(config) { /* implementation */ } in einer JS-Datei und verwenden Sie sie dann auf einigen Seiten myWidget({{ pythonConfig | js }}). Sie können es jedoch nicht in JS-Dateien verwenden (wie Sie bemerkt haben), daher hat es seine Einschränkungen.

    – Jaroslawischer Administrator

    21. Dezember 2017 um 16:55 Uhr


  • Seien Sie jedoch vorsichtig. Abhängig davon, wie Sie die Variable/das Formular verwenden, kann der Benutzer alles eingeben, was er möchte.

    – AndyL

    2. Mai 2012 um 23:24

  • Möglicherweise möchten Sie Ihr Eingabefeld auch auf schreibgeschützt setzen (siehe diesen Link). w3schools.com/tags/att_input_readonly.asp)

    – Nu Everest

    20. Dezember 2012 um 13:53

  • Wenn es sich um etwas handelt, das eine Datenbank nicht verändert oder nicht an eine Datenbankabfrage gesendet wird, wäre das in Ordnung. @AndyL

    – James111

    8. Februar 2016 um 22:18


  • Leute… Benutzer können sowieso machen, was sie wollen. Browser machen es heutzutage mit einem voll ausgestatteten DOM-Inspektor und Debugging-Tools so einfach. Moral der Geschichte: Führen Sie ALLE Datenvalidierungen durch Server.

    – Benutzer2867288

    18. Februar 2017 um 7:14


  • Kann mir bitte jemand sagen, wie Sie auf diese Variable in einer externen JavaScript-Datei zugreifen würden?

    – Ahtisham

    21. Dezember 2017 um 12:54

  • Dies funktioniert tatsächlich ohne komplizierte Skripte von Drittanbietern.

    – Darth Vader

    19. November 2021 um 2:24

  • Dies funktioniert tatsächlich ohne komplizierte Skripte von Drittanbietern.

    – Darth Vader

    19. November 2021 um 2:24

  • Das sollte eigentlich die Antwort sein. Das funktioniert perfekt, ohne dass irgendwelche seltsamen manuellen Zitate entkommen.

    – derteufelqwe

    24. Dezember 2020 um 23:16 Uhr

1450250cookie-checkSo verwenden Sie die Variablen aus „views.py“ in JavaScript, „” in der Django-Vorlage?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy