(私はjqueryとdjangoを使用しています)
各アイテムが一意の主キー (pk) を持つ todo リストがあるとします。テンプレートでは、これらの項目を for ループで一覧表示して、各項目をクリックしてページの別の部分に項目の詳細を表示できるようにします (もちろん、ページ全体をリロードする必要はありません)。
これを行うための一般的に受け入れられている最良の方法は何ですか?
各divを「一意化」する複数の方法と、このpkをajaxリクエストで渡す複数の方法を試しました。
パート 1 - 一意の div を取得する:
- 各アイテム div の ID のサフィックスとして pk を付けました。例 {% for item in todolist %} stuff $('body').on('click',"#item_{{item.pk}}", function(){var id = {{item.pk}}, .ajax のもの }) {% endfor %}
- 接尾辞 pk の代わりに、data-id というカスタム html 属性を追加します。これにより、.attr("data-id") を使用して、クリックされた div から pk を取得し、for ループから js を削除できます。
- カスタム html 属性を追加する代わりに、非表示のフォーム フィールドを追加します。
パート 2 - pk を ajax リクエストに渡す:
- $.ajax() 本体で、データ フィールドを空にして url: id+"/details" を設定しました。Django では、URL 正規表現の定義から ID を取得します。
- $.ajax() 本体で、url: "/details" に data: {id:id} を設定しました。Django では、views.py 内から request.POST['id'] で ID を取得します。
- js では、フォームを送信するだけです。Django は id をフォーム フィールドとして取得します。
それで...これを行うには非常に多くの(おそらく悪い)方法がありますが、どれを使用しますか?