[英]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.