2017-01-16 8 views
1

私はoTree(社会実験用のDjangoベースの環境)でプログラミングしていますが、私は次の問題があります。私はPythonでいくつかのリストを定義し、それらをインポートしてHTMLテンプレートで使用したいと思います。しかし、私はHTMLでそれらを印刷すると、問題なく見れますが、Javascriptでそれらを使う必要があると、プログラムはそれらを読み込むことができず、リストの要素の一重引用符は'に変換されます。 リストはこのようにインポートされますvar filtered_elements = {{ array }};JavascriptでPythonのリストを読む方法[Djangoのテンプレートで]

私は問題がまさにここにあると思います.JSはそれらと一緒に働くことができないからです。あなたはそれを行う方法について何か提案していますか?私はJSONの使用を検討しましたが、プログラミングが初めてのので、時間の無駄であるのか、より単純な方法であるのか分かりません。 あなたの答えをありがとう!

答えて

2

データが既にJSONであるようですが、それ以外の場合は単一引用符とuという接頭辞が付きます。だから、唯一の問題はDjangoの自動食刻です。あなたはsafeフィルタでそれを無効にすることができます

var filtered_elements = {{ array|safe }}; 
+0

おかげで、本当に動作しているようです。私はモジュールとテンプレートの間にデータを格納するために既にJSONに取り組んでいるかもしれないという印象を持っていましたが、私はそれについてまだよく分かっていませんでした... – DenisDiderot

2

あなたのデータ代わりに直接接触するようにPythonのリストを置くことで、JSONである必要があり、文脈辞書に"array": json.dumps(array)を置きます。

JSON文字列はタグ内でHTMLエスケープを必要としませんが、JSエスケープが必要です。 JSONにユーザーデータが含まれている場合は、</script><script>absolutely anything goes here...のような文字列が含まれています。

ので|escapejsを使用します。

var filtered_elements = {{ array|escapejs}}; 
+1

同意します。 btwは、Python側でレンダリング(または同様のメソッド)を呼び出すときに、 'json.dumps()'(ujsonまたはsimplejson)を使用することを忘れないでください。 jsonはjs-happyデータの直列化を提供するjavascriptからの指向です。 – liuyruc

+0

私は理解していません、それは好ましいですか安全か|またはエスケープjs、違いは何ですか? – DenisDiderot

+1

通常、DjangoはHTMLエスケープを自動的に適用します。これはあなたが見たものです( '' '〜' ' 'など)。 JavaScriptはHTMLではないので、必要ありません。 '| safe'は単にすでにエスケープされている文字列をマークするだけなので、エスケープは適用されません。 '| escapejs'はJSのために必要なエスケープの種類を'

  • 11. PythonでQuickTimeヘッダーを読む方法
  • 12. pythonでavroファイルを読む方法3.5.2
  • 13. ファイル全体をPythonのリストに読み込む方法は?
  • 14. Pythonで文字列のリストの一部だけを読む方法
  • 15. HandlebarJSで複数のテンプレートを読み込む方法
  • 16. Python Djangoテンプレート:リストを反復する
  • 17. Pythonリストをdjangoテンプレートに渡します
  • 18. ローカルテキストファイルを配列リストに読み込む方法Javascript
  • 19. DjangoテンプレートでCSSを読み込むには?
  • 20. javascriptでwindow.onloadで2つの関数を読み込む方法
  • 21. python djangoで辞書を含むjavascriptリストを解析するには
  • 22. Python関数のドキュメントを読む方法
  • 23. Pythonのtxtファイルからリストを読む
  • 24. アップロードされたテキストファイルの最初の行をPython/djangoで読む
  • 25. imacrosでJavaScriptのページを読むのを待つ方法
  • 26. djangoテンプレートを使用してjavascriptコードをdjangoテンプレートにロードする方法
  • 27. Ember.jsで部分/ビュー/テンプレートを動的に読み込む方法
  • 28. htmlのページでjavascriptの値を読み込む方法
  • 29. PL/SQLでオーストリア・ロビンソンのリストを読む方法
  • 30. Python - djangoテンプレートのアンエスケープ