通过getJSON将Javascript变量传递给Django views.py

Passing Javascript variable to Django views.py with getJSON

本文关键字:Django views py getJSON Javascript 变量 通过      更新时间:2023-09-26

我目前有一个javascript变量myVariableToSend包含一个字符串,我需要发送到我的视图,在那里我可以使原始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)

,我得到一个错误,数据没有显示

如果你想发送你的变量到视图函数,你可以用url捕获它,像这样:

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

在url .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

回答最初的问题:

您的服务器失败可能是因为views.py语法错误

some_data = request.GET(myVariableToSend)

myVariableToSend在这里没有定义。所以你应该得到这样的结果:

some_data = request.GET['myVariableToSend']

除了原来的问题:

如果你想这样设置你的django应用,你会很头疼的。如果你使用django的ORM,你可以更容易地查询数据库。点击这里阅读。

另外,如果你想把模型中的数据发送到javascript代码中,你可以使用Django REST框架来节省很多时间。