Javascript 如何使用JQuery和Django从SQLite获取信息?
我在Django有个项目。在Python视图脚本中,我创建了一个数组,并通过 接下来,我通过以下方式将此数组发送到HTML文件:Javascript 如何使用JQuery和Django从SQLite获取信息?,javascript,jquery,python,django,sqlite,Javascript,Jquery,Python,Django,Sqlite,我在Django有个项目。在Python视图脚本中,我创建了一个数组,并通过 接下来,我通过以下方式将此数组发送到HTML文件: return render(request,'field.html',{'some_array': some_array}) “field.html”与“app.js”通过以下方式连接: 我需要从'app.js'访问存储在数据库“db.sqlite3”中的“some_array”(如果使用Python,则位于“user.profile.some_array”位置),
return render(request,'field.html',{'some_array': some_array})
“field.html”与“app.js”通过以下方式连接:
我需要从'app.js'访问存储在数据库“db.sqlite3”中的“some_array”(如果使用Python,则位于“user.profile.some_array”位置),使用JavaScript进行一些更改并保存它
互联网社区建议使用AJAX,但我找不到我需要的示例。你能帮我吗
另外,我使用Pycharm社区建议AJAX,因为它是客户端浏览器中的脚本“在后台”与服务器通信的方式。但要使用它,您仍然需要API或一些Django视图,它们将获取AJAX的请求、进行一些操作并发送响应。了解更多关于AJAX的信息 但对于基本的解决方案,您需要两件事——适当的AJAX请求和一些带有视图的Django API来处理它们 让我们从API开始,为脚本创建两个URL:
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响应。
现在是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请求和(JSON GET/POST/UPDATE/DELETE api的伟大框架)的内容
最后一件事——Django中的每个POST请求都需要CSRF令牌。在JavaScript中使用它们是很复杂的,下面是一个例子。若你们想要快捷方式,你们可以为选择的视图关闭它,但我不推荐它。更多
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'),
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})
$.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
}
});