2017-07-20 20 views
0

コードのこの作品は、コールバック関数へのURLを渡し、マップのcertian部分をクリックするjavascriptの変数では、関連するビューとその後のテンプレート「Country_Details.html」は、Djangoのテンプレートにjavascriptの変数を渡す方法

var var_1 = "{% url 'County_Details' pk=1 %}" 
をレンダリング与えられた例において

は、I引数を通過した、それはそれが正常に動作「= 1 PK」は、「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 }) 

に関連付けられたオブジェクトをフェッチされたが、私はIDのリストを持っていますクリック数に応じてpk値を動的に置き換えることができるソリューションが必要です例えば ​​"my_id"という変数があります。

私は多くのことを試しましたが、何も私のために働いていません。私のウェブサイトで見つかった非常に近いスレッドは、以下のように与えられています。

Get javascript variable's value in Django url template tag

私はすべてのソリューションを提案しようとしているが、何も作業していません。

どうすればこの問題を解決できますか?

ありがとう

答えて

0

djangoとテンプレートとjsについて知っておくべきことがいくつかあります。 1.すべてのdjangoコードはサーバー側です。それはエンドユーザーに到達する前にサーバー上で評価されます。 2.すべてのJavaScriptはクライアント側です。それがユーザーに届いた後で評価されます。 3. Djangoテンプレートロジックはdjangoコードと見なすことができ、そのためにサーバー側でもあります(エンドユーザーになる前に評価されます)。 4. djangoテンプレートタグとjsを混在させることはできますが、レンダリングされたテンプレートでのみ実行できます。別々のjsファイルではありません。これを行うと、djangoテンプレートのロジックがサーバー上でのみ動的であることに気付きます。これは本質的に、一度クライアント上で決して変更されない単一の価値を保持するプレースホルダとして機能します。言い換えれば、javascriptはdjangoテンプレートタグロジックを操作できません。しかし、djangoテンプレートタグロジックは、サーバによってレンダリングされている間に、JavaScriptロジックを一度操作することができます。

これは、この場合には必ずしも有用ではないかもしれませんが、理解して少し役立つかもしれません。

だから、これを試してみてください。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 }} + " %}"; 

私はよく分かりません。もしそうなら、それを使って、もう1つはしないでください。さもなければ、私は第2のものが常に構文的に働くが、きれいに見えないことを知っている。したがって、構文が働く場合は、最初の構文を使用してください。

2番目の場合、{{django_var_? }}は文字列を返しますので、" + {{ django_var_? }} + "の周りに一重引用符を入れる必要があります。

var url_option2 = "{% url 'my_url', pk = '" + {{ django_var_1 }} + "', somevar = '" + {{ django_var_2 }} + "' %}"; 
関連する問題