2016-08-17 27 views
0

私は現在、単一の文字列を含むmyVariableToSendというjavascript変数を持っています。データベースから対応するデータを収集するために生のSQLクエリを作成するビューを送信する必要があります。それは私のjavascriptに戻る。ここで私が持っているものです。Javascript変数をDjango views.pyにgetJSONで渡す

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), 

Iドンサーバーを実行すると、http500エラーが発生するため、私のサーバーサイドスクリプト(views.py)が動作しているとは思われません。どんな助けもありがとう。ありがとうございました。

UPDATE:私は私の全体のViews.pyをコメントアウトしてのみ

def getData(request): 

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

を入れたときに、私は何の問題やAJAXリクエストが動作しない得ること

私が発見しました。しかし、元のgetDataを持っていても動作しません。私は私のviews.pyにこの行を追加する場合:

some_data = request.GET(myVariableToSend) 

、私はuはビューで機能するウル変数を送信したい場合は、uはそれをキャプチャすることができ、エラーを取得し、データが

+0

なぜ生のSQLクエリを使用していますか?あなたはDjangoの中核的な機能であるORMをまだ理​​解していませんか?次に、実際にチュートリアルを行う必要があります。 –

+0

はい私はDjangoのORMについて知っていますが、私はこのようにしたいと思います。それは学習目的のためです。 – Carbon

+0

DEBUGをTrueに設定する必要があります。そうした場合、変数myVariableToSendが定義されていないので、その関数の最初の行にNameErrorがあることがわかります。 –

答えて

1

が表示されません。 URLと、次のように:urls.pyで次に

$.getJSON('http://127.0.0.1:8000/getData/' + myVariableToSend +'/', function (serverdata) { //do ur work} 

あなたが持っている:

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

urデータが機密扱いの場合は、そうかもしれません。私のプロジェクトではこのソリューションを使用していますが、URLを介して送信するデータはプライベートではありません。 –

+0

URLの代わりにリクエストでデータを渡すことでこの問題を解決する方法はありますか?私はあなたの答えをありがとうが、私はちょうど他の方法が行われる方法を見たいと思います。ありがとうございました。 – Carbon

1

元の質問に答える:views.py

some_data = request.GET(myVariableToSend) 

myVariableToSendで不正な構文は、ここで定義されていないので、

あなたのサーバーはおそらく失敗しています。あなたはthis.Youがあなたを照会することができますようにあなたのDjangoアプリケーションをセットアップしようとした場合は頭痛の多くを得るでしょう

:元の質問のほかに

some_data = request.GET['myVariableToSend'] 

:だから、このようにそれを取得する必要がありますdjangoのORMを使用するとデータベースの方が簡単になります。それについてhereを読んでください。

また、モデル内のデータをJavaScriptコードに送信する場合は、Django REST Frameworkなどのフレームワークを使用して、時間を大幅に節約することができます。

関連する問題