使用getJSON将Javascript变量传递给Django views.py

时间:2016-08-17 19:31:05

标签: javascript jquery python django

我目前有一个名为myVariableToSend的javascript变量,它包含一个字符串,我需要发送到我的视图,我可以在其中创建原始SQL查询以从数据库中收集相应的数据并将其恢复到我的javascript。这就是我所拥有的:

使用Javascript:

function scriptFunction(myVariableToSend){

        $.getJSON("http://127.0.0.1:8000/getData/", myVariableToSend, function(serverdata){
        window.alert(serverdata);
});

Views.py:

def getData(request):
    some_data = request.GET(myVariableToSend)
    cursor = connection.cursor()
    cursor.execute("SELECT Car_ID FROM cars WHERE Carname = %s ", [some_data])
    row = cursor.fetchall()
    return JsonResponse(row, safe = False)

Urls.py:

url(r'^admin/', include(admin.site.urls)),
url(r'^$', startpage),
url(r'^getData/$', getData ),

我认为我的服务器端脚本(views.py)不起作用,因为当我运行服务器时,我收到了http500错误。任何帮助,将不胜感激。谢谢。

更新

我发现当我注释掉我的整个Views.py并且只放

def getData(request):

return JsonResponse({"hello":"World"}, safe = False)

我没有遇到任何问题,AJAX请求也可以。但是,当我有我原来的getData时,它不起作用。当我在views.py中添加这一行时:

some_data = request.GET(myVariableToSend)

,我收到错误并且没有显示数据

2 个答案:

答案 0 :(得分:1)

如果您想将ur变量发送到视图中的函数,您可以使用url捕获它,如下所示:

$.getJSON('http://127.0.0.1:8000/getData/' + myVariableToSend +'/', function (serverdata) { //do ur work}

然后在urls.py中你有:

url(r'getData/(?P<my_var>\w+)/$', views.get_data, name='get_data')

然后是views.py:

def get_data(request, my_var):
#do ur work here

答案 1 :(得分:1)

回答原来的问题:

您的服务器失败可能是因为views.py

中的语法错误
some_data = request.GET(myVariableToSend)

myVariableToSend在这里未定义。所以你应该这样:

some_data = request.GET['myVariableToSend']

除了原来的问题:

如果您尝试设置这样的django应用程序,您会感到很头疼。如果您使用django的ORM,您可以更轻松地查询数据库。阅读它here

此外,如果您想将模型中的数据发送到您的javascript代码,您可以使用Django REST Framework等框架节省大量时间。