2017-01-24 1 views
0

私のページに情報を渡すためにajaxデータを使用していますが、javascriptのデータを使用してビューを呼び出すリンクを作成する必要があるため、通常は{% url 'jobs:close' foo %}テンプレートはレンダリングされますが、あとでajax呼び出しを介してインポートされます。明らかに、これは、テンプレートがレンダリングされるときにエラーを引き起こします。djangoパラメータを渡さずに逆URLを取得する方法はありますか?

このような状況で逆URLルックアップを有効にし、fooを渡さずにテンプレート内のURLを動的に取得する方法や、テンプレート内のURLをハードコードして貼り付ける必要がありますか後で最後に?

+0

私は通常、明らかに偽のパラメータを使用し、後でJS内でそれを交換します。ハッキーだが、うまくいく。 –

+0

私はそれについて考えました。最後の '/'の後ろのすべてをハックして自分のコードに貼り付けますが、あなたが言ったように、ちょっとハッキリしているようです。それはまた、全体のコードをいくつかのプレゼンテーションの部分とは別の遺跡の種類を廃止するので、私は物事を行うにはジャンゴの方法があるはずだと思った。 –

+0

ちょうどそれについて考えて、それらの部分を残しておくのは問題ではないと考えて、方法がないかもしれません。 URLパターンはかなり複雑なものになる可能性があります。 –

答えて

0

考えて、コメントを見て、私は偽のパラメータを追加して後でそれを削除するという答えに決めました。フォームがレンダリングされるときに削除されるので、パラメータはそれほど重要ではありません。私は1を選んだ。

私のテンプレートでは、{% url 'jobs:close' '1' %}と書いています。私のjavascriptでは、モーダルでフォームを呼び出すと、フォームを見つけるためにjqueryを使います。それは、もう一度同じURLを使用することが容易になりますので、ここにある:私は本当に必要なジョブIDを格納していますどこ

var modal = $("#modal"); 
var closeUrl = '{% url 'jobs:close' '1' %}'; 
closeUrl = closeUrl.substring(0, closeUrl.length - 2) + event.data.id + /; 
modal.find("#close-job").attr('action', closeUrl); 

event.data.idです。

私が探していたほど滑らかではありませんが、うまくいきます。

1

ajaxレスポンスで 'foo'を取得する代わりに、ajaxレスポンスで逆URLを取得し、URLが必要なDOMを置き換えます。

関連する問題