4

Django アプリのどこかで、自分のビューに対して Ajax 呼び出しを行います

$.post("/metrics", {
  'program': 'AWebsite',
  'marketplace': 'Japan',
  'metrics': {'pageLoadTime': '1024'}
});

私のpythonコードでは、私は持っています

@require_POST
def metrics(request):
    program = request.POST.get('program', '')
    marketplace = request.POST.get('marketplace', '')
    metrics = request.POST.get('metrics', '')
    reportMetrics(metrics, program, marketplace)

metrics()Pythonの関数はreportMetrics()、これらのパラメータを使用して呼び出す必要があり、これらのパラメータはログ ファイルに記録されます。しかし、ログ ファイルに「pageLoadTime」の値が表示されません。おそらく、辞書として渡されているためです。将来、これにさらに項目を追加する必要があるため、辞書のままにする必要があります (最初の 2 つのような文字列ではありません)。

この着信 JavaScript 辞書を Python 辞書に変換する最も簡単な方法は何ですか?

4

1 に答える 1

6

JavaScript 辞書を json として送信し、pythonjsonモジュールをインポートして元に戻します。json.loads(jsonString) を使用します。

編集 - 例を追加

$.post("/metrics", {
   data: JSON.stringify({
      'program': 'AWebsite',
      'marketplace': 'Japan',
      'metrics': {'pageLoadTime': '1024'}
   })
});

次にpython側で

import json
def metrics(request):
    data = json.loads(request.POST.get('data'))
    program = data.get('program','')
    marketplace = data.get('marketplace','')
    metrics = data.get('metrics','')

現在、これをテストする良い方法はありませんが、うまくいくはずです。フィールドが空白かどうかを確認する必要があるかもしれませんが、それを.get()処理してくれると思います。

于 2013-03-04T19:27:16.803 に答える