0

複合データ構造「グリッド」を次のように渡すDjango/JQuery/MySQLアプリケーションを作成しています

return render_to_response('products.html', grid)

「grid」を一連のUI要素(「td」、「button」、「div」など、HTMLの「テーブル」にカプセル化されたもの)にレンダリングします。

典型的なユースケース:

  1. ユーザーがテーブル内の特定のUI要素をクリックします
  2. jQUery.click()が呼び出され、クリックされた要素の内部の「入力」タグが作成されます。
  3. ユーザーは要素からテキストを追加/変更/削除できます。
  4. フォーカスが失われると、jQuery.blur()が呼び出され、入力タグの削除など、クリックされた要素の元のプロパティが元に戻ります。
  5. jQuery.blur()はAJAX関数も呼び出します。ここで、.post呼び出しを実行して、ユーザーが変更したデータをURL(ビュー内の関数)に送り返します。
  6. 次に、ビュー内の呼び出された関数は、データベース内の新しい変更をコミットし、「成功」イベントをWebページに返します。

    tc_model_instance.update(tc_id=json_data['id'])
    

このユースケースを通じて、ユーザーがデータを取得し、特定の要素へのフォーカスを放棄するとすぐに、変更がデータベースにコミットされることがわかります。INNODBでDBトランザクションを使用せずに、HTMLテンプレートの変更がモデルに非同期的に反映されるように、ビューとテンプレートの関連付けを作成するにはどうすればよいですか。ただし、必ずしもデータベースに書き込まれるとは限りません。

関連する質問:可能であれば、レンダリングされたテンプレートとビューの一部としてデータ構造の間にイベントベースの双方向の関連付けを作成し、WebブラウザーのUI要素または関連付けられたビューのデータに変更が加えられるようにします。常に同期しています。私はAJAXを最も目的に使用する予定です。フォームがこの点で意味があるかどうかはわかりません。

ありがとう。

4

1 に答える 1

1

オブジェクトのコピーをセッションマップにスローすると、すべての投稿がDBではなくそのオブジェクトを直接変更する可能性があります。次に、ユーザーが保存ボタンを押すと、サーバーに対して別のPOSTコマンドが実行され、session ['my_object']。save()が呼び出されます。

ただし、セッションオブジェクトもDBに保存されるため、DBに完全にアクセスしないようにしようとしている場合は、上記で記述した内容は役に立ちません。

于 2012-04-11T11:47:34.157 に答える