使用金字塔从表中选择一行

时间:2012-02-21 02:49:03

标签: python html pyramid

我想构建(构建一个表很容易,我在模板中做)一个表并从中选择一行。我使用金字塔作为框架,我想我不得不让模板与模型对话,但我不知道如何。有人可以给我一个例子或指示我链接,我可以看到一个解释和一个例子(我无法找到一个)。这是我的表格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> 

1 个答案:

答案 0 :(得分:3)

做出一些假设,你描述的内容将通过ajax处理,这是一种基于javascript的技术,并且超出了Pyramid框架的范围,但很容易添加。下面是一个非常简单的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>

标签之间的代码是javascript,这里我使用jQuery库来创建对url'/ some_pyramid_url_to_a_view /'的ajax调用,该调用与视图函数'some_pyramid_view'相关联。我使用类'row'“$('。row')上的jQuery选择器将click事件绑定到表中的row元素.bind('click',...”然后事件由紧随其后的功能块“function(){...}”。我在options对象中设置调用并在数据“data:{'row_id'中传递行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用于与Pyramid视图中的javascript进行通信。 JSON代表JavaScript Object Notation,是一种数据交换格式。我创建了一个Python字典,并使用'json'包将其转换为JSON,我将其发送回javascript中的'success'回调函数,并带有方法调用的结果。在成功回调函数中,我使用视图中方法调用的结果更新表行中的文本。 '$(行)的.text(event.data.method_result)'

这可能比您预期的要多,但是值得学习如何使用ajax为您的网站添加功能。