2012-02-15 284 views
0

我創建一個Django/JQuery的/ MySQL的應用程序,其中我通過複合數據結構「網格」作爲Django的延遲更新數據庫

return render_to_response('products.html', grid) 

我渲染「網格」爲一組用戶界面元素(」 TD」, '按鈕', 'DIV' 等封裝在一個HTML '表格'

一個典型的使用情況下:

  1. 一定UI元素用戶點擊在表
  2. JQUERY。 CLIC調用k()爲點擊的元素創建一個內部「輸入」標記。
  3. 用戶可以添加/修改/刪除元素中的文本。
  4. 當焦點丟失時,調用jQuery.blur()來恢復被點擊元素的原始屬性,例如移除輸入標籤等。
  5. jQuery.blur()也調用AJAX函數,我在其中執行.post調用將用戶修改後的數據發送回URL(功能在視圖中)。
  6. 鑑於被調用的函數,然後提交數據庫中的新變化,並返回一個「成功」事件回網頁:

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

通過這種使用情況下,你可以看到的變化是一旦用戶提交數據並立即致力於數據庫,並放棄對特定元素的關注。如果不使用INNODB中的DB事務,我該如何創建一個View-Template關聯,以便HTML模板中的任何更改都異步地反映在模型中,但不一定寫入數據庫。

一個相關的問題: 如果可能的話,我還想創建一個基於事件的雙向關聯模式和我的數據結構作爲視圖的一部分,以便在Web瀏覽器的用戶界面元素或關聯視圖的數據始終保持同步。我打算最大程度地使用AJAX。不確定表單在這方面是否合理。

謝謝。

回答

1

您可能會將對象的副本放入會話映射中,並且所有帖子都會直接更改該對象而不是數據庫。然後,當用戶按下保存按鈕時,您會向服務器發送另一個POST命令,然後只需調用session ['my_object']。save()。雖然

注意,會話對象也保存在數據庫中,所以如果你想避免碰到DB完全是我上面寫的也幫不了。