繁体   English   中英

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

[英]Passing Javascript variable to Django views.py with getJSON

目前,我有一个名为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)

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

如果您想发送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

回答原始问题:

您的服务器出现故障,可能是因为views.py中的语法错误

some_data = request.GET(myVariableToSend)

myVariableToSend在这里未定义。 因此,您应该像这样获得它:

some_data = request.GET['myVariableToSend']

除了原始问题:

如果尝试以这种方式设置django应用程序,您会头疼不已。如果使用django的ORM,则可以更轻松地查询数据库。 在这里阅读。

另外,如果要将模型中的数据发送到javascript代码,则可以使用Django REST Framework之类的框架来节省大量时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM