2013-03-04 3 views
2

어딘가에 파이썬 사전에 자바 스크립트 사전 변환, 내 파이썬 코드에서 내보기내 장고 응용 프로그램에

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

에 Ajax 호출을, 나는 파이썬

@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() 기능을 가지고있다 이 매개 변수를 사용하여 reportMetrics()으로 전화를 걸면 로그 파일에 저장됩니다. 하지만 내 로그 파일에서 'pageLoadTime'값이 표시되지 않습니다. 아마도 사전으로 전달되기 때문일 수 있습니다. 앞으로는 더 많은 항목을 추가해야하므로 사전 (처음 두 개와 같은 문자열이 아님)로 남아 있어야합니다.

들어오는 자바 스크립트 사전을 파이썬 사전으로 변환하는 가장 쉬운 방법은 무엇입니까?

답변

3

json으로 자바 스크립트 사전을 보내고 파이썬 json 모듈을 가져 와서 다시 가져 오십시오. json.loads (jsonString)를 사용합니다.

편집 - 추가 된 예를

$.post("/metrics", { 
    data: JSON.stringify({ 
     'program': 'AWebsite', 
     'marketplace': 'Japan', 
     'metrics': {'pageLoadTime': '1024'} 
    }) 
}); 
정말 지금이 권리를 테스트하는 좋은 방법이없는

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()이 처리 할 것입니다.

+0

'metrics'대신 { 'pageLoadTime': '1024'} 'metrics': '{pageLoadTime : 1024}'를 누른 다음 json.loads()를 사용 하시겠습니까? – kk1957

+0

그동안 잠시 있지만 믿기 만하면됩니다. '$ .post ("/ metrics", {data : JSON.stringify ({ 'program': 'Awebsite', ...}))' 파이썬의 데이터를 통해. – Hoopdady

+0

미안하지만, 나는 그것을 얻지 못할 것 같아요. 코드 예제로 파이썬에서 추출하는 방법을 보여줄 수 있습니까? – kk1957

관련 문제