0

それを行う方法を理解しようとしているのは2日です。初心者なので出来るだけ詳しく教えてください。

私は自分のviews.pyでこれをやっています

dict1 = simplejson.dumps(dict1)
return render_to_response('main_page.html', {
                    'js_testsuite':testsuite_dict,
                    'js_testset':js_testset,
                    'dict1':dict1})

main_page.html 内

{% if js_testsuite %}               
<select id="testsuites" name="testsuite" onchange="setOptions(document.selection.testsuite.selectedIndex);">
    {% for key, value in js_testsuite.items %}
            <option value={{ value }} name="testsuite">{{ key }}</option>
    {% endfor %}
</select>
{% endif %}

関数 setOptions(value) を含む setoptions.js では、選択ボックスの選択されたインデックスを渡します。この値を使用して、2 番目の選択ボックスを設定する必要があり、この選択ボックスのデータは、上記の views.py 。また、やってみました

var value_from_django = {{ dict1 }};

他に欠けているものは何ですか。これについて詳しい説明をお願いします。私はこれを2日間試していました。

  • djangoテンプレートを直接バイパスして、djangoビューからjavascriptに値を渡す方法はありますか?
  • django ビューから html テンプレートに情報を渡してから、javascript に渡すことはできますか?

私が言及しているJavaScriptは、jqueryではなく単純なJavaScriptです。

ご協力ありがとうございました、

ビナイ

4

1 に答える 1

1

ajax 呼び出しを使用して別のリクエストを開始するか、応答ヘッダーにデータを埋め込むなどの非常に珍しいことをしない限り、テンプレートをバイパスして JavaScript に値を渡すことはできません (実際にはこれを行わないでください。です!)。ヘッダーとボディ (テンプレートによって生成された部分であるボディ) を含む応答は、アプリケーションがクライアントに提供する情報の合計であるため、追加の要求を生成し、ajax で追加の応答をフェッチしない限り、他に選択肢はありません。

それをしたくない場合、テンプレートを介して JavaScript に情報を渡すためのオプションは、基本的に次のとおりです。

  • インライン タグを使用して、適切にフォーマットされた JavaScript をテンプレート システムを介して動的に作成します。あなたが持っている例の行は、var value_from_django = {{ dict1 }};基本的に私がここで話していることですが、テンプレート内の辞書の django のテキスト出力がJavaScript 変数宣言の正確なフォーマット。だから、代わりにできる...
  • データを JSON に変換してテンプレートに入れ、JavaScript で処理します。(これは通常 ajax 呼び出しで行われますが、JSON データを最初のテンプレートに直接挿入することを妨げるものは何もありません。)
  • または、HTML に必要なデータを入力してから、javascript を使用してデータを含む HTML タグを見つけ、データを解析します。

整数などの単純な変数を渡そうとする場合は、1 番目または 3 番目のオプションを使用するのが最も簡単かもしれません。辞書のようなより複雑なデータ構造を渡そうとする場合は、おそらく JSON を使用する方がよいでしょう (それが目的です!)

より詳細で具体的な指示を提供したいと思いますが、そのためには、現在のアプローチで正確に何が問題になっているのか、および目的の機能が何であるかについて、より詳細に投稿する必要があります.

ところで、このページに jquery を含めて、基本的な JavaScript を使用する代わりに jquery を使用することが可能であれば、そうするべきです。それはあなたの人生をずっと楽にしてくれます。

于 2012-10-28T09:36:28.500 に答える