2017-07-20 5 views
0

Dieses Stück Code ist ein JavaScript-Variable, die URL einer Callback-Funktion übergibt und auf certian Teil einer Karte klicken macht damit verbundene Ansichten und anschließend die Vorlage „Country_Details.html“JavaScript Variable Django Vorlage passiert

var var_1 = "{% url 'County_Details' pk=1 %}" 

In dem gegebenen Beispiel I Argument übergeben habe, war, dass "pk = 1" es in Ordnung, die mit der "ID" = 1.

def County_Details(request,pk): 
    C_Details = CountryDiseases.objects.filter(country__pk=pk) 
    return render(request, 'DATAPLO/Country_Details.html', {'C_Details': C_Details }) 

zugehörigen Objekt geholt arbeiten, aber ich habe eine Liste von IDs und ich möchte eine lösung, die die pk-werte dynamisch nach clicks thro ersetzen kann ugh eine Variable, sagen wir "my_id".

Obwohl ich viele Dinge ausprobiert habe, aber nichts funktioniert für mich. Ein sehr naher Thread wie von mir, den ich im Web gefunden habe, ist brüllen.

Get javascript variable's value in Django url template tag

ich versucht habe, die gesamte Lösung vorgeschlagen, aber nichts funktioniert.

Wie könnte ich dieses Problem lösen.

Dank

Antwort

0

Es gibt ein paar Dinge, über django und Vorlagen und js kennen. 1. Alle Django-Code ist Server-Seite. Es wird auf dem Server ausgewertet, BEVOR es den Endbenutzer erreicht. 2. Alle Javascript ist Client-Seite. Es wird ausgewertet, NACHDEM es den Benutzer erreicht. 3. Django Template-Logik kann als Django-Code betrachtet werden und ist daher auch serverseitig (evaluiert, BEVOR sie den Endnutzer erreicht). 4. Sie können Django-Vorlagen-Tags und js mischen, aber nur in Vorlagen, die gerendert werden, keine separaten js-Dateien. Wenn Sie dies tun, erkennen Sie, dass die Django-Vorlagenlogik nur auf dem Server dynamisch ist. Es fungiert im Wesentlichen als Platzhalter, die einen einzigen Wert haben, der sich beim Kunden nie ändert. Mit anderen Worten, JavaScript kann die Django-Template-Tag-Logik nicht manipulieren. aber Django-Template-Tag-Logik kann JavaScript-Logik ONCE manipulieren, während sie vom Server gerendert wird.

Das mag in diesem Fall nicht unbedingt nützlich sein, aber es könnte ein wenig mit Verständnis helfen.

diese So versuchen:

in mytemplate.html:

var url_option1 = "{% url 'my_url', pk = django_var_1, somevar = django_var_2, ... %}"; 
var url_option2 = "{% url 'my_url', pk = " + {{ django_var_1 }} + ", somevar = " + {{ django_var_2 }} + " %}"; 

Ich bin nicht sicher, ob das erste Option syntaktisch arbeiten. Wenn ja, benutze das und mach das zweite nicht. Ansonsten weiß ich, dass der zweite immer syntaktisch funktioniert, aber nicht so sauber aussieht. Wenn die Syntax funktioniert, verwenden Sie die erste.

Für die zweite, wenn {{django_var_? }} gibt eine Zeichenkette zurück, Sie müssen einfache Anführungszeichen um die " + {{ django_var_? }} + " wie folgt setzen:

var url_option2 = "{% url 'my_url', pk = '" + {{ django_var_1 }} + "', somevar = '" + {{ django_var_2 }} + "' %}"; 
Verwandte Themen