Übergeben Sie eine Liste von Zeichenfolgen von Django an Javascript

7

Meine Django-Objekte haben ein Attribut "Stadt". Ich versuche, eine Liste von Städten zu erhalten und es in der Vorlage mit Jquery zu fangen (in einem Diagramm auf der X-Achse zu verwenden).
Mein Problem ist, dass ich den Unicode nicht los werde und Zitat für eine Liste.
(Ich schaffe es für einen einzigen Wert). Stattdessen stehe ich fest:
["[Paris], [Lyon]]"]

Ich habe Tonnen von Dingen probiert, inklusive JSON. Kein Erfolg.

Meine Sicht: (eigentlich, einer von vielen versuchen ..)

%Vor%

Mein JS:

%Vor%

Hier liest JS den Kontext, der von der Ansicht gesendet wurde ["[Paris], [Lyon]]"]

Hier ist was ich gerne bekommen würde
['Paris', 'Lyon']

Es muss etwas einfaches sein, aber ich konnte einfach nicht herausfinden, wie es geht. Andere Posts beschäftigen sich nicht mit einer Liste von Strings.

Irgendeine Idee von was soll ich tun?

    
xavier carbonel 15.01.2014, 23:02
quelle

1 Antwort

19

Wenn Sie {{ city_array }} in Ihrer Vorlage verwenden, wird Ihre Liste in eine Zeichenfolge konvertiert. Dies geschieht durch Aufruf von repr() in der Liste, die rekursiv repr() auf ihren Inhalt aufruft. Da Ihre Strings Unicode sind, sehen Sie diese Unicode-Literale, u'Paris' .

Der "richtige" Weg, dies zu tun, ist, Ihre Daten nach json zu kodieren, zum Beispiel in Ihrer Sicht:

%Vor%

und dann

%Vor%

in der Vorlage.

Bitte beachten Sie: Verwenden Sie dies nicht für Benutzer-Controller-Daten! Siehe XSS Spickzettel von OSWASP und die Diskussion auf Django ticket 17419 für weitere Informationen. Um XSS zu verhindern, könnten Sie etwas wie den SafeJSONEncoder aus dem django-cms-Projekt .

    
sk1p 15.01.2014, 23:18
quelle

Tags und Links