2016-08-17 28 views
0

我目前有一个名为myVariableToSend的javascript变量,它包含一个字符串,我需要发送到我的视图中,我可以使用原始SQL查询从数据库中收集相应的数据,它回到我的JavaScript。以下是我有:将Javascript变量传递给Django与getJSON的views.py

的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错误。任何帮助,将不胜感激。谢谢。

UPDATE:

我发现,当我注释掉我的整个Views.py只有放

def getData(request): 

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

我没有得到任何的问题和AJAX请求工作。但是当我有我的原始getData时,它不起作用。当我在我的views.py加入这一行:

some_data = request.GET(myVariableToSend) 

,我得到一个错误和数据不显示

+0

为什么使用原始SQL查询?你没有想出Django的核心特性ORM吗?那么你应该真的做的教程。 –

+0

是的,我知道Django的ORM,但我想这样做。它用于学习目的。 – Carbon

+0

您应该将DEBUG设置为True。如果你这样做了,你会看到你在该函数的第一行中得到一个NameError,因为变量myVariableToSend没有被定义。 –

回答

1

如果妳想要发送乌尔变量视图功能,U可以捕捉它与网址,例如:

$.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 
+0

通过URL而不是通过请求发送数据不是不好的做法吗? – Carbon

+0

如果你的数据是敏感的,那么也许它是。我在我的项目中使用这个解决方案,但是通过URL发送的数据不是私有的。 –

+0

有没有办法通过传递数据而不是url来请求数据?我感谢你的回答,但我只想看看如何完成其​​他方式。谢谢。 – Carbon

1

回答原来的问题:

你的服务器可能失败,因为在views.py

some_data = request.GET(myVariableToSend) 

myVariableToSend语法错误是不确定的在这里。所以,你应该得到这样的:

some_data = request.GET['myVariableToSend'] 

除了原题:

如果您尝试设置您的Django应用程序一样this.You可以查询你会得到很多头疼的你数据库方式更容易,如果你使用Django的ORM。阅读关于它here。另外,如果您想将模型中的数据发送到您的JavaScript代码,您可以使用类似Django REST Framework的框架节省大量时间。