我目前有一个名为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)
,我收到错误并且没有显示数据
答案 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等框架节省大量时间。