2016-07-31 1 views
0

Wenn wir ein URL-Tag in unserer Java-Vorlage haben, wird es auf einen Klick {% url 'product_details' pk=soproduct.id %} ausgeführt und es wird innerhalb der Hyper-Link das Ziel wird der vollständige Pfad einschließlich Domäne und Pfad verwendet.Wie Django Uri Vorlage Tags aus dem Client-Seite Java Script ausführen?

<a href="{% url 'soproduct_details' pk=soproduct.id %}">{{ soproduct.id }}</a> 

und arbeitet perfekt und

http://127.0.0.1:8000/production/subproduct/details/7/

erzeugen Aber wenn wir gleiche Vorlage Tag innerhalb Client-Seite Java-Script

var destination = {% url 'product_details' pk=soproduct.id %} 

es verwenden möchten, ein Problem m, die die Verbindung, die erzeugt werden wird, um den Pfad enthalten aber die Domain nicht enthalten

/Produktion/Unterproduktaddierer/details/7/

Wie dieses Problem gelöst werden kann?

UPDATE:

Dies ist das Skript Ich versuche, es auszuführen, in der for-Schleife befindet sich in der django-Vorlage.

<script> 


var currentLocation = window.location.href; 

function AddCardToTrello() { 
    Trello.addCard({ 
    url: currentLocation, 
    name: "{{ soproduct.product }}", 
    due: {{ soproduct.required_date|date:"SHORT_DATE_FORMAT" }} 
}); 
} 

    function addCardThenGo(url) { 
     AddCardToTrello(); 
     window.location.href = url; 
    } 
</script> 

Und gleich nach dem Skript, das ich meinen Ruf haben

<a onclick="addCardThenGo({% url 'add_to_production_board' pk=soproduct.id uri=request.build_absolute_uri %})">Add to Trello</a> 

So wird Skript so oft im Code wiederholt werden, wie Schleife mit neuen Parametern geht

+0

Die ' URL-Tag wird immer die URL relativ zum Hostnamen generieren. Der Browser nimmt automatisch den aktuellen Root Ihrer Site, um die absolute URL zu erstellen. Dasselbe sollte mit Ajax-Anrufen geschehen. Der Anruf sollte mit der generierten relativen URL funktionieren. –

+0

Ich hatte das gleiche Verständnis, aber es tut es einfach nicht, wenn es in Java-Skript verwendet wird –

+0

Wie Docs sagen: "{% url%} Gibt eine absolute Pfadverweis (eine URL ohne den Domänennamen) mit einer bestimmten Ansicht und optionale Parameter ... ". Es wurde nicht von django gemacht, es ist das Verhalten des Browsers. Wie auch immer, warum brauchst du den Domainteil dort? Wenn Sie sich die Quelle der Seite ansehen, werden Sie feststellen, dass der href-Teil "production/subproduct/details/7 /" ohne Domain ist. –

Antwort

1

Oh, ich glaube, ich habe es. Wenn der von Ihnen angegebene Code genau dem entspricht, den Sie verwenden, haben Sie die Anführungszeichen vergessen. Es sollte so aussehen:

var destination = "{% url 'product_details' pk=soproduct.id %}"; 

Und danach können Sie dies machen:

window.location.href = destination; 

UPDATE

Bitte, versuchen Sie, dies zu tun:

<a onclick="addCardThenGo('{% url 'add_to_production_board' pk=soproduct.id uri=request.build_absolute_uri %}')">Add to Trello</a>