2012-02-21 4 views
0

(테이블을 쉽게 생성 할 수 있으며 템플릿 내부에서) 테이블을 만들고 그 행을 선택하고 싶습니다. 피라미드를 프레임 워크로 사용하고 있는데 어떻게 든 템플릿을 모델에 연결해야한다고 생각하지만 어떻게해야할지 모르겠습니다. 누군가가 내게 모범을 보여 주거나 내가 설명과 예를 볼 수있는 곳으로 연결하도록 지시 할 수 있습니까? (나는 찾을 수 없었습니다). 이 테이블에 대한 내 HTML입니다 :피라미드를 사용하여 테이블에서 행 선택하기

<table border="1"> 
    <tr> 
     <th>Course Number</th> 
     <th>Course Name</th> 
     </tr> 
     <tr> 
     <td>111</td> 
     <td>What ever the name is</td> 
    </tr> 
    </table> 
+0

나는 당신이 정말로하고 싶은 것을 이해하지 못했다. 그러나 나는 당신이 아약스 요청으로 이것을 할 수 있다고 확신한다. 더 명확히하십시오. 달성하고자하는 결과의 예를 들어주십시오. –

답변

3

당신은 자바 스크립트를 기반으로하는 기술이다 아약스를 통해 처리 될 것입니다 무엇을 설명 몇 가지 가정을 만들기, 그들은의 범위를 벗어난 피라미드 프레임 워크하지만 쉽게 추가. 다음은 HTML이 어떻게 보일지에 대한 아주 간단한 예제입니다.

<html> 
    <head> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
     $('.row').bind('click',function(){ 
      var row = $(this); 
      options = { 
       url:"/some_pyramid_url_to_a_view/", 
       type:"get", 
       data:{'row_id':$(this).attr('id')}, 
       success:function(event){$(row).text(event.data.method_result)}, 
       error:function(){alert('error')}, 
       dataType:'json' 
      } 
      $.ajax(options); 
     }); 
    }); 
</script> 
    </head> 
    <body> 
     <table> 
     <tr id="${row.id}" class="row"> 
      <td>Row</td> 
     </tr> 
    </body> 
</html> 

태그 사이의 코드

는 여기에 내가 URL로 아약스 전화를 만들기 위해 jQuery 라이브러리를 사용하고, 자바 스크립트입니다 '/ some_pyramid_url_to_a_view /'뷰 기능 'some_pyramid_view'에 연결된다. 나는 클래스 '행' "$ ('. row')에서 jQuery 선택기를 사용하여 테이블의 행 요소에 click 이벤트를 바인딩합니다. bind ('click', ..."이벤트는 다음에 의해 처리됩니다. 함수 객체 "function() {...}"을 호출하면 옵션 객체에서 호출을 설정하고 데이터 "{row_id ': $ (this) .attr (' id ')} ", 코드"$ (this) .attr ('id ') "가 템플릿'... '에 설정된 ID에 액세스하는 경우 마지막으로 요청을'$ .ajax (옵션) '.

import json 

@view_config(xhr=True) 
def some_pyramid_view(request): 
    json_dict = dict() 
    session = DBSession() 
    if request.method == 'GET': 
     row_id = request.GET['row_id'] 
     row = session.query(Row).get(row_id) 
     json_dict['method_result'] = row.some_method_call() 
    return Response(json.dumps(json_dict)) 

여기에 또 다른 조각이있다가, JSON은 피라미드보기에서 자바 스크립트로 다시 통신하는 데 사용하고있다. JSON 자바 스크립트 객체 표기법을 의미하고, 데이터 교환 형식입니다. 나는 파이썬을 만들 사전에 추가하고 'json'패키지를 사용하여 JSON으로 변환 한 후 'succes 메소드 호출 결과와 함께 javascript에서 's'콜백 함수를 호출합니다. 성공 콜백 함수에서 뷰의 메서드 호출 결과로 테이블 행의 텍스트를 업데이트합니다. '$ (row) .text (event.data.method_result)'

이것은 예상했던 것 이상일 수 있지만, 아약스를 사용하여 웹 사이트에 기능을 추가하는 방법을 배우는 것이 좋습니다.

+1

+1은 피라미드가 정말로 그 질문과 아무 관련이 없다는 것을 지적합니다. 웹 프레임 워크의 문제점은 새로운 사용자가 무엇을 책임지고 있는지를 아는 것이 어렵다는 것입니다. 경계가 어디에 있는지 항상 지적하는 것이 좋습니다. 피라미드는 http 요청을 받아 http 응답을 생성합니다. 피라미드는 사용자가 javascript/css/html/ajax 등을 배우는 필요성을 무효화하지 않으며 .... 또한 제한을 두지 않습니다. 따라서 피라미드는 웹 애플리케이션을 작성하는 데 사용하는 하나의 도구입니다. –

관련 문제