2017-04-11 17 views
0

私はDjangoにプロジェクトを持っています。 Pythonのビュースクリプトでは、私は、配列を作り、DjangoでJQueryを使用して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は『

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

は、私が 『app.js』へのアクセスを取得する必要があると』app.js」に接続されています』 Pythonを使用している場合は "user.profile.some_array"の位置) JavaScriptでいくつかの変更を加えて保存します。

インターネットコミュニティはAJAXを使用するようアドバイスしていますが、必要な例は見つかりません。私たちを手伝ってくれますか?

P.S. Pycharmを使用しています

答えて

0

コミュニティのアドバイスAJAXは、クライアントのブラウザのスクリプトがあなたと「バックグラウンドで」通信する方法であるためです。しかし、それを使用するには、Ajaxのリクエストを取得し、操作を行い、応答を送るDjango ViewsやAPIが必要です。 AJAXの詳細についてはw3schoolsjQuery docsをご覧ください。

しかし、基本的な解決策のためには、適切なAJAXリクエストとそれらを処理するViewsを持つDjangoのAPIの2つが必要です。

私たちのスクリプトのための2つのURLを作成し、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'), 

最初のビューは、(JSONとして)それの配列を送り返し、指定されたidによってユーザーを取得します。

2番目のビューは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のための偉大な枠組み)についての詳細を読むことをお勧めします。

最後に1つ - DjangoのPOST要求ごとにCSRFトークンが必要です。 JavaScriptでこれらを使用するのは複雑です(docs for that)。ショートカットが必要な場合は、選択したビューでオフにすることができますが、推奨しません。 More info here.

関連する問題