用id / hash渲染cherrypy的模板

时间:2013-03-12 19:28:23

标签: javascript python cherrypy

如何呈现页面并转到特定ID?

现在我有以下函数使用此代码:

@cherrypy.expose
@require
def page():
    tmpl = lookup.get_template('page.html')
    return tmpl.render()

但是,现在page.html确实有几个子页面,我可以通过mydomain.com/page#someid等网址访问这些子页面。

有没有办法让模板直接转到id?

1 个答案:

答案 0 :(得分:1)

我认为您正在混合这些想法,URL的#部分是客户职责,专注于特定的元素ID。不过,我想你想通过javascript动态地嵌入页面特定部分的块,我可以考虑两种可能性:

一,使用来自不同子模板的不同ID组成整页模板,如果您使用模板模块(如mako),并且使用一个cherrypy处理程序返回单个部分,这很容易当然假设您控制页面的内容并且ID不是动态的(从db或其他东西生成),主站点是一堆includes

@cherrypy.expose
def page_part(section):
    tpl_name = 'page_%s.html' % section
    # validate that the template exists, then:
    tmpl = lookup.get_template(tpl_name)
    return tmpl.render()

Mako模板:

page.html中:

<html>
  <body>
     <div id="main">
          This is the main content of the site!
      </div>
      <h4>Sections</h4> 
      <div id="section_1">
       <%include file="page_section1.html" />
      </div>

      <div id="section_2">
       <%include file="page_section2.html" />
      </div>
 </body>
</html>

page_section1.html:

<p> Content of section 1</p>

page_section2.html:

<p> Content of section 2</p>

或者两个,使用jQuery选择器或类似的东西来请求页面一次,并在返回的html中进行子选择。

$.get('/page.html', 
      function(data){
          $('#this_page_id').html($('#sect_in_other_page', $(data)).html());
      });