2013-07-25 3 views
0

첫째, 나는 웹 개발 세계에 새로운 것이므로,이 질문이 지나치게 간단하다면 미안하다. 파이썬을 사용하여 AJAX 요청을 처리하려고합니다. 문서를 읽는 것에서 Dojo/요청이이 양식을 수행 할 수있는 것처럼 보이지만이 작업을 수행하는 데 도움이되는 예제는 찾지 못했습니다.dojo/request를 사용하여 파이썬 함수 호출하기

서버에서 가져 오려는 JSON 데이터를 반환하는 일부 함수로 파이썬 파일 (myFuncs.py)이 있다고 가정합니다. 이 호출을 위해 나는이 파일 내부의 특정 기능에 관심이 있어요 : 그다지 명확하지 않다 무엇

def sayhello(): 
    return simplejson.dumps({'message':'Hello from python world'}) 

는 도장/요청을 사용하여이 함수를 호출하는 방법입니다. 설명서에 다음과 같은 내용이 나와 있습니다.

require(["dojo/dom", "dojo/request", "dojo/json", "dojo/domReady!"], 
    function(dom, request, JSON){ 
     // Results will be displayed in resultDiv 
     var resultDiv = dom.byId("resultDiv"); 

     // Request the JSON data from the server 
     request.get("../myFuncs.py", { 
      // Parse data from JSON to a JavaScript object 
      handleAs: "json" 
     }).then(function(data){ 
      // Display the data sent from the server 
      resultDiv.innerHTML = data.message 
     }, 
     function(error){ 
      // Display the error returned 
      resultDiv.innerHTML = error; 
     }); 
    } 
); 

달성하려는 목표에 거의 근접합니까? myFuncs.py 내에서 호출 할 함수를 지정하는 방법을 이해할 수 없습니까? 당신이 또한 수있는 무엇

+2

그런 파이썬 함수를 호출 할 수 없습니다. 시도중인 파일은 단순히 .py 파일을 다운로드합니다. 파이썬을 웹 개발에 사용하려면 django 나 pylon과 같은 프레임 워크를 사용해보십시오. 자습서를 통해 답을 얻을 수 있습니다. – specialscope

+0

@specialscope 빠른 응답에 감사드립니다. Dojo의 약속을 사용하여 서버에서 반환 된 데이터를 해결할 생각이 듭니다. dojo/request 또는 dojo/promise 내부에서 Python으로 Dajaxice 호출을 감싸는 것이 가능합니까? – en51nm

+1

저는 Dajaxice에 익숙하지 않으므로 이에 대해 언급 할 수 없습니다. django에서 GET 또는 POST 핸들러를 만들고 dojo get/post (ajax)를 사용하여 전화를 걸면 요청에 따라 django에서 json을 반환하고 dojo를 사용하여 json을 읽고 원하는 작업을 수행 할 수 있습니다. – specialscope

답변

1

는 파이썬 측

당신이

을 따를 수 있습니다 .... 그 서버에 Ajax 호출을하고 JSON 데이터를 얻을 수있는 작은 JSONRPC 서버 및 사용에 도장을 만드는 것입니다

jsonrpclib

도장 당신이 뭔가를 시도 할 수 있습니다 ..

<script> 
    require(['dojox/rpc/Service','dojox/rpc/JsonRPC'], 
    function(Service,JsonRpc) 
    {  
     function refreshContent(){ 
      var methodParams = { 
       envelope: "JSON-RPC-2.0", 
       transport: "POST", 
       target: "/jsonrpc", 
       contentType: "application/json-rpc", 
       services:{} 
      }; 

      methodParams.services['myfunction'] = { parameters: [] }; 
      service = new Service(methodParams); 

      function getjson(){ 
       dojo.xhrGet({ 
        url: "/jsonrpc", 
        load : function(){ 
         var data_list = []; 
         service.myfunction().then(
          function(data){ 
           dojo.forEach(data, function(dat){ 
            data_list.push(dat);            
           }); 
           console.log(data_list) 
          }, 
          function(error) { 
           console.log(error); 
          } 
         ); 
        } 
       }); 
      }   
      getjson(); 
     }  
     refreshContent(); 
     });        
    });  
</script> 

나는 내가 아니다 장고에이 방법을 사용했습니다 rpc 호출에 대해 다른 서버를 만들지 만 django의 URL 링크를 사용하여 호출을 내 함수로 전달할 수 있습니다. 그러나 항상 작은 RPC 서버를 만들어서 같은 작업을 수행 할 수 있습니다.

관련 문제