[PYTHON] [Django] So übergeben Sie Werte direkt von Vorlagen-Tags an JavaScript-Variablen

Background

Wenn Sie anzeigen möchten, wie es von context_data von Template View zu HTML ist, können Sie es anzeigen, indem Sie das Tag wie folgt festlegen.

views.py


from django.views.generic import TemplateView

class SampleTemplateView(TemplateView):
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['areas'] = ["japan","tokyo","osaka","nagoya","sapporo","sendai","fukuoka"]
        return context

index.html


...
    <ul>
    {% for item in areas %}
        <li> {{ item }} </li>
    {% endif %}
    </ul>
...

Wird angezeigt.

Es gibt jedoch Situationen, in denen Sie einen Wert direkt übergeben möchten, wenn Sie mit der Javascript-Bibliothek zeichnen möchten. Hier erfahren Sie, wie Sie es weitergeben.

Failure

Wenn Sie es so bestehen, wie es ist, ...

<script type="text/javascript">
    var areas = "{{ areas }}";
    console.log(areas);
</script>
[&#x27;japan&#x27;, &#x27;tokyo&#x27;, &#x27;osaka&#x27;, &#x27;nagoya&#x27;, &#x27;sapporo&#x27;, &#x27;sendai&#x27;, &#x27;fukuoka&#x27;]

Einfache Anführungszeichen, "<", ">" usw. werden automatisch konvertiert. Da es sich um einen Zeichenkettentyp handelt, dachte ich, es wäre in Ordnung, ihn mit "JSON.parse" zu diktieren, nachdem er durch einen regulären Ausdruck ersetzt wurde, aber ich konnte es nicht gut machen.

Als Ergebnis der Forschung habe ich zwei Methoden gefunden.

Method 1 Es ist schlammig, aber es ist eine Möglichkeit, jedes Element aufzurufen und in Javascript-Code zu schreiben.

var areas = [
{% for area in areas %}
{% with index=forloop.counter0 %}
{% if 0 < index%},{% endif %}
{% endwith %}
"{{area.name}}"
{% endfor %}
];
console.log(areas);

Method 2

Die andere Möglichkeit besteht darin, die automatische Fluchtsteuerung mit "autoescape" auszuschalten.

{% autoescape off %}
var areas = {{ areas }};
{% endautoescape %}
console.log(areas);

Dieser ist einfacher.

Reference

Recommended Posts

[Django] So übergeben Sie Werte direkt von Vorlagen-Tags an JavaScript-Variablen
[Python] So entfernen Sie doppelte Werte aus der Liste
So nehmen Sie erste Einstellungen für die Django-Projekterstellung vor
So führen Sie eine arithmetische Verarbeitung mit der Django-Vorlage durch
So überprüfen Sie die Version von Django
So bedienen Sie Linux von der Konsole aus
So erstellen Sie eine Anwendung aus der Cloud mithilfe des Django-Webframeworks
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
So drucken Sie Debug-Meldungen auf der Django-Konsole
So bedienen Sie Linux von außen Vorgehensweise
So messen Sie die Leitungsgeschwindigkeit vom Terminal aus
So finden Sie die Korrelation für kategoriale Variablen
Übergeben von Argumenten beim Aufrufen von Python-Skripten über Blender in der Befehlszeile
So erstellen Sie einen Artikel über die Befehlszeile
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
Verwendung des Azure Table-Speichers von Django (PTVS)
DJango Hinweis: Von Anfang an (Erstellen einer Ansicht aus einer Vorlage)
So starten Sie Jupyter Notebook sofort vom Terminal aus
Führen Sie die Python-Funktion von Powershell aus (wie Sie Argumente übergeben).
Übergang zum Update-Bildschirm mit dem Django-Tag
So veröffentlichen Sie ein Ticket über die Shogun-API
[Python] So geben Sie Listenwerte der Reihe nach aus
[Django] So leiten Sie nicht angemeldete Benutzer zur Anmeldeseite um
Django # 2 (Vorlage)
Django HTML-Vorlage
Organisieren Sie Django-Vorlagendateien
Django Memo # 1 von Grund auf neu
DJango Hinweis: Von Anfang an (Erstellen einer Ansicht aus einer Vorlage)
Django von vorne anfangen (Teil: 2)
Django von vorne anfangen (Teil: 1)
Verwenden Sie das Django-Modell vom Interpreter
Zeigen Sie Django ManyToManyField in der Vorlage
DJango Memo: Von Anfang an (Vorbereitung)
[Anfänger] Von der Django Query-Datenbank abrufen
Machen Sie einen Filter mit einer Django-Vorlage
[Django] So übergeben Sie Werte direkt von Vorlagen-Tags an JavaScript-Variablen
So legen Sie Variablen fest, die in der gesamten Django-App verwendet werden können ~ Praktisch für Vorlagen usw. ~
So schreiben Sie eine benutzerdefinierte Validierung in Django REST Framework
[Django] Übergeben Sie die von der API authentifizierte Benutzerinstanz an ModelSerializer
[Django] Wie man Eingabewerte im Voraus mit ModelForm angibt
Berechnen des aus ABC134-D gelernten Rechenaufwands
So melden Sie sich automatisch wie 1Password von der CLI an
(Hinweis) So übergeben Sie den Pfad Ihres eigenen Moduls
So generieren Sie eine Abfrage mit dem IN-Operator in Django
Wie man NAPALM aus dem Web erreicht (NetDevOpsSec echte Lösung)
Verwendung diskreter Werte als Variablen in Scipy optimieren
DJango Memo: Von Anfang an (weitere Änderungen am Verwaltungsbildschirm)
Übergeben Sie die OpenCV-Daten der ursprünglichen C ++ - Bibliothek an Python
Bericht über (möglicherweise) Änderungen von Django 2.x zu Django 3.x: Festlegen des Umschreibens statischer Datei-Tags und der HttpResponse-Umleitung
Verwendung des Generators
So definieren Sie Go-Variablen
Übergeben Sie den Text an Django genericview
Wie benutzt man den Dekorateur?
So erhöhen Sie die Achse
So starten Sie die erste Projektion
So erhalten Sie alle möglichen Werte in einem regulären Ausdruck
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
[Python] So erhalten und ändern Sie Zeilen / Spalten / Werte aus einer Tabelle.
[EC2] So installieren und laden Sie chromedriver über die Befehlszeile herunter
[Django] Lesen von Variablen / Konstanten, die in einer externen Datei definiert sind
So extrahieren Sie die gewünschte Zeichenfolge aus einem Befehl in Zeile 4
So beheben Sie den Fehler, der in toimage aufgetreten ist (aus PIL.Image Import fromarray als toimage)
Verwendung der in .mako (.html) direkt in mako definierten Renderfunktion
[Tipps] Die Vorgehensweise beim Erstellen von HTML mit Django wird erweitert
So beheben Sie die Probleme beim Lesen von Google Cloud Storage-Bildern von Django, die auf GAE bereitgestellt wurden