2016-05-18 8 views
0

私は、テンプレート内のJavaScriptのonclickイベントを得た、と私はそれからidパラメータと私のDjangoのURLのいずれかを呼び出したい、このように:コールDjangoのURLを

$(document).on('click', '.alink', function() { 
     var id = $(this).attr('id'); 
     document.location.href ="{% url 'myapp:productdetailorder' id %}" 
}); 

コースこの全く働いていません。何か案が ?

ありがとうございます!

+0

正確にあなたの目標は何ですか? Djangoのテンプレートタグの中で参照される変数 'id'は、javascriptと同じものではありません。 JavaScriptのDjangoテンプレートを使用すると、一般的には面白くないコードが作成されますが、基本的にはjavascriptで文字列連結を実行したいと思っているように聞こえます。 Djangoタグを文字列を返す関数と考え、それに対応するJavaScriptを記述して連結します。 – fvgs

+0

こんにちは、私のビューは、それを処理し、別のテンプレートの情報を表示できるように私はURLのために設定したい製品のIDだと、IDのおかげで、IDです。私は間違っているかもしれないが、正確に何が必要なのか知っている:それを行う良い方法 – jsanchezs

+0

それは関連するURLがあなたのAPIのエンドポイントにあるかのように思える。 APIは動的ではなく、変更しない限り安定していなければならないため、通常はこのURLをJavaScriptコードにハードコードします。だから、私はちょうどあなたのJavaScriptコードでURLを書くことをお勧めします。 – fvgs

答えて

2

ユーザがバックエンドのDjangoテンプレート内でフロントエンドをクリックしたときに作成されるjavascript変数にアクセスしようとしています。しかし、あなたはすでにそれがうまくいかないことを知っています。

より良いオプションは、JavaScriptでURLを再構築するために、次のようになります。

$(document).on('click', '.alink', function() { 
    // Generate URL without "id" bit 
    var url = "{% url 'myapp:productdetail' %}"; 

    var id = $(this).attr('id'); 

    // Construct the full URL with "id" 
    document.location.href = url + "/" + id; 
}); 

あなたが必要なURLを返しますDjangoのURLヘルパーを持っていない場合は、あなただけの任意のと、単にプリントアウトすることができますそのようなJavaScriptでそれを置き換える:

$(document).on('click', '.alink', function() { 
    var url = "{% url 'myapp:productdetail' 123 %}"; 
    var id = $(this).attr('id'); 

    // Construct the full URL with "id" 
    document.location.href = url.replace('123', id); 
}); 
+0

あなたの答えをありがとう、私は近いと知っているが、このようにすると、逆URLエラーが発生する: 'productdetail'の引き数 '()'とキーワード引き数 '{}'が見つかりません。 1つのパターンが試されました:['myapp/product /(?P \\ d +)/ $'] .....そしてidパラメータが最初から必要であると思います。 – jsanchezs

+0

ええ、これはdjangoのルートヘルパーです。必要な値を出力する別のURLヘルパーを呼び出してください。あなたが持っていなければ、あなたはどんなidでも印刷し、jsで置き換えることができます。私は私の答えを更新します。 – Uzbekjon

+0

完璧に動作します、ありがとう! – jsanchezs

1

問題は(私は右だ?)あなたは、JS静的ファイルでDjangoテンプレート言語を使用して、その中にあるように思わ EX、テンプレートファイルをHTMLにその変数を移動しよう:

<script type=text/javascript> 
Var a = "{% url'myapp:productdetail' id %}" </script> 

と静的のjsファイル内:

document.location.href = a;