社區建議AJAX,因爲這是您的客戶端瀏覽器中的腳本與您的服務器「在後臺」進行通信的方式。但要使用它,你仍然需要API或者一些Django Views來獲取你的AJAX請求,進行一些操作併發送響應。通過w3schools和jQuery docs瞭解有關AJAX的更多信息。
但是對於基本的解決方案,您需要兩件事 - 適當的AJAX請求和一些帶有Views的Django API來處理它們。
讓我們先從API,創建兩個網址爲我們的腳本:
url(r'^api/get_array/(?P<uid>\d+)$', views.GetArrayView.as_view(), name='get_array'),
url(r'^api/save_array$', views.SaveArrayView.as_view(), name='save_array'),
首先查看將由給定id獲得用戶,然後發回它的陣列(如JSON)。
Second View將獲得POST數據並將其保存到數據庫中。
from django.http import JsonResponse
class GetArrayView(View):
def get(self, request, uid):
# some operations to get array from database using user ID given in uid parameter
# array is a list, just like one in your question
return JsonResponse({'array': array})
class SaveArrayView(View):
def post(self, request):
post = request.POST
changed_array = post.get('array')
user_id = post.get('uid')
# some operations to save your array into database
return JsonResponse({'status': OK})
關於JSON響應,read this。 現在,AJAX。爲了得到陣列,在腳本中使用:
$.ajax({
type: "GET",
url: '/api/get_array/'+user_id,
success: function(response){
// your array is in the response.array
},
error: function(jqXHR, textStatus, errorThrown){
// handle any errors here
}
});
$.ajax({
type: "POST",
url: '/api/save_array/',
data:{
array: your_changed_array,
uid: user_id,
some_other_data: other_data,
},
success: function(response){
if(response.status == "OK"){
// everything went fine
}
else{
// you can send other responses and handle them here
}
},
error: function(jqXHR, textStatus, errorThrown){
// handle any errors here
}
});
這是非常基本的設置,我建議你閱讀更多關於AJAX請求和Django REST Framework API(JSON的GET/POST/UPDATE大框架/ DELETE API)。
最後一件事 - Django中的每個POST請求都需要CSRF令牌。在JavaScript中使用它們很複雜,這裏是docs for that。如果你想要快捷方式,可以關閉選定的視圖,但我不推薦它。更多info here.