Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用JQuery和Django从SQLite获取信息?_Javascript_Jquery_Python_Django_Sqlite - Fatal编程技术网

Javascript 如何使用JQuery和Django从SQLite获取信息?

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”位置),

我在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”位置),使用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
    }
});