如何呈现页面并转到特定ID?
现在我有以下函数使用此代码:
@cherrypy.expose
@require
def page():
tmpl = lookup.get_template('page.html')
return tmpl.render()
但是,现在page.html
确实有几个子页面,我可以通过mydomain.com/page#someid
等网址访问这些子页面。
有没有办法让模板直接转到id?
答案 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());
});