Javascript-Variable in Django-Vorlage verwenden

8

Ich habe ein benutzerdefiniertes Schablonentag, das eine Liste von Ländern über einen Webaufruf an den SOAP-Dienst abruft und das html select -Tag füllt. Jetzt habe ich ein weiteres Schablonen-Tag, das eine Liste von Auswahlmöglichkeiten für das gegebene Land anzeigt, und offensichtlich reicht der Name des Landes als Argument. So kann ich den Namen des Landes an das zweite benutzerdefinierte Tag nur übergeben, nachdem onchange -Ereignis auf html select-Tag ausgelöst wird und ich Ländername als eine Javascript-Variable vom Benutzer gewählt haben. Wie würde ich diesen Wert an das benutzerdefinierte Vorlagen-Tag übergeben? Hier sind meine benutzerdefinierten Tags

%Vor%

Hier ist mein html select -Tag

%Vor%

Und schließlich, hier ist mein Javascript

%Vor%

Ich kann die country js-Variable anscheinend nicht an get_available_carriers tag

weitergeben

Jede Hilfe wird sehr geschätzt! Danke

    
david Kartashyan 27.05.2014, 01:19
quelle

2 Antworten

1

Sie haben den Wert von JavaScript-Funktion nicht an den Django-Vorlagen-Tag übergeben. Aber in diesem Fall können Sie Ajax-Anrufe verwenden.

Ссылка

Ссылка

Aktualisierung:

Sehen Sie, Sie können verstehen, was vor sich geht.

Wie man die Javascript-Variable an den benutzerdefinierten Filter django übergibt

Ich hoffe, das ist eine hilfreiche Idee.

    
dhana 27.05.2014, 03:04
quelle
2

Django Templates werden bei der Erzeugung der Seite serverseitig erstellt, während JavaScript auf der Client Seite ausgeführt wird, wenn es benötigt wird. Somit können Django und Javascript keine Objekte / Daten teilen.

Auf Ihrer Seite mit dem aktuellen Javascript haben Sie etwas wie:

%Vor%

Was Sie brauchen, ist, entweder die Liste in Ihrer Ansicht zu generieren und ein carrier -Objekt zurückzuliefern, das bereits erstellt wurde. Mit etwas Glück können Sie es vielleicht in Javascript verwenden.

Der beste Weg hier ist immer noch, eine AJAX-Anfrage zu machen, um diese Liste zu erhalten:

%Vor%

und die mit jQuery (wenn Sie es verwenden):

%Vor%

Vergessen Sie nicht, das URL-Muster zu definieren, mit dem get_available_carriers in meinem Beispiel.

    
Maxime Lorant 27.05.2014 06:03
quelle