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