簡體   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