2017-04-11 21 views
0

我在Django有一個項目。在Python視圖腳本我做了一個數組,並如何使用JQuery和Django從SQLite獲取信息?

request.user.profile.some_array = some_array 

下一頁將此值添加到我的SQLite數據庫「db.sqlite3」我給這個數組HTML文件中這樣說:

return render(request,'field.html',{'some_array': some_array}) 

的「 ‘存儲在數據庫中‘db.sqlite3 some_array’(在:field.html app.js‘

script src="{% static 'app.js' %} 

我需要從‘app.js’的訪問以’」與連接’如果使用Python,則位置爲「user.profile.some_array」) ,使用JavaScript進行一些更改並保存。

互聯網社區建議使用AJAX,但我找不到我需要的示例。你可以幫幫我嗎?

P.S.我使用Pycharm

回答

0

社區建議AJAX,因爲這是您的客戶端瀏覽器中的腳本與您的服務器「在後臺」進行通信的方式。但要使用它,你仍然需要API或者一些Django Views來獲取你的AJAX請求,進行一些操作併發送響應。通過w3schoolsjQuery 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.