2016-07-31 7 views
0

私たちのJavaテンプレートにurlタグがある場合、それはクリックで実行されます {% url 'product_details' pk=soproduct.id %}そしてそれはハイパーリンクの中で宛先がドメインとパスを含むフルパスになります。クライアントサイドのJava ScriptからDjango uriテンプレートタグを実行するには?

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

と完璧な作品と

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

を生成する。しかし、我々は

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

クライアント側のJavaスクリプト内で同じテンプレートタグを使用する場合があり控えめな生成されたリンクはパスが含まれますが、ドメインは含まれませんメートル

/生産/サブプロダクト/詳細/ 7/

これを解決することができますどのように

UPDATE:

これは私がそれを実行しようとするスクリプトはDjangoテンプレートでのforループに位置しています。

<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> 

、ループが新しいパラメータで行くように右のスクリプトの後、私は私のコール

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

を持っているので、スクリプトはコードのように何度も繰り返される

+0

' url'タグは常にホスト名に関連したURLを生成します。ブラウザは自動的にあなたのサイトの現在のルートを取って絶対URIを構築します。 Ajaxの呼び出しでも同じことが起こります。呼び出しは、生成された相対URLで動作するはずです。 –

+0

私は同じ理解を持っていましたが、Javaスクリプト内で使用されている場合はそれをしません –

+0

docs: "{%url%}特定のビューに一致する絶対パス参照(ドメイン名のないURL)を返します。オプションのパラメータ... "これは、ジャンゴによって行われていない、それはブラウザの動作です。とにかく、そこにドメイン部分が必要なのはなぜですか?ページのソースを調べると、hrefの部分がドメインなしで "production/subproduct/details/7 /"であることがわかります。 –

答えて

1

ああ、私は私が得たと思いますそれ。あなたが提供したコードがまったく同じものであれば、引用符は忘れてしまいます。

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

を、その後、あなたは、このことができます:それはこのようにする必要があり

window.location.href = destination; 

UPDATE

、これを実行してみてください:

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