この質問は明白でなければなりませんが、わかりません。コンテキスト変数をDjangoのjavascriptファイルに渡すにはどうすればよいですか?
テンプレートでは、自分のメディアディレクトリにあるjsファイルにリンクします。そのファイルから、{{my_chart}}のようなコンテキスト変数にアクセスしたいと思います。
しかし、構文は異なりますか?ありがとうございました!!
この質問は明白でなければなりませんが、わかりません。コンテキスト変数をDjangoのjavascriptファイルに渡すにはどうすればよいですか?
テンプレートでは、自分のメディアディレクトリにあるjsファイルにリンクします。そのファイルから、{{my_chart}}のようなコンテキスト変数にアクセスしたいと思います。
しかし、構文は異なりますか?ありがとうございました!!
このようには考えられません。ビューによって提供されるいくつかのデータにアクセスするには、js関数に渡す必要があります。
例
JSファイル:
my_cool_js_function(some_param){
// do some cool stuff
}
ビューこのことができます:)
[{{value | escapejs}}](https://docs.djangoproject.com)を見てください。/ja/dev/ref/templates/builtins /#escapejs) – danihp
アンジェイBobakの答えに加えて、あなたはまた、グローバル変数を生成することができます
// some html code
my_cool_js_function({{param}})
希望あなたのテンプレートからJavascriptでたとえば、あなたのテンプレートは、このようなコードを生成することがあります:
<script>
var my_chart = {{ the_chart }};
</script>
あなたのスクリプトは、my_chart
を参照することができます。
@Brian_Nealこれはどのように機能しますか?つまり、javascriptファイルで 'console.log(my_chart);'のようなことをするだけで、どこに宣言する必要はありませんか? – YPCrumble
@YPCrumbleこれは、Djangoによって生成されたhtmlで宣言されています。同じHTMLファイルに外部のjavascriptファイルも含まれている場合、javascriptはその変数を参照できます。 –
これはすばらしい答えです。jsファイルをインポートする前にグローバル変数を宣言している限り、問題はないはずです。ありがとう。 –
、
<script>
var my_var = '{{ python_object|escapejs }}';
</script>
さらに、そのオブジェクトをコンテキストに入れる前に、最初にJSONにシリアル化することをお勧めします。そうしないと、文字列の解析が必要になります。私は、このステップの前に日付オブジェクトを文字列に変換する必要があることも発見しました。
import jsonpickle
context['python_object'] = jsonpickle.encode(python_object)
そして最後に、JSにあなたがして、適切にオブジェクトを反復処理し、あなたはおそらく実行してpythonでなければならないような値を使用することができます:[Djangoのテンプレート変数とJavascriptの
var my_var_parsed = jQuery.parseJSON(my_var);
が重複する可能性を](http://stackoverflow.com/questions/298772/django-template-variables-and-javascript) – Cory