繁体   English   中英

金字塔中的渲染模板和JSON

[英]Render template and JSON in Pyramid

我使用远端将会话中的JSON值加载到Web应用程序中。 但是,当我最初使用Chameleon模板渲染页面时,我想加载一些任意的JSON值来填充结构。 做这个的最好方式是什么?

我目前正在做的是使用模板呈现页面,然后在文档准备就绪时使用javascript请求JSON。 但是,这会导致装载时出现卡顿现象。

您可以在几个视图之间共享相同的数据。 如果请求是通过AJAX进行的,则您将返回数据的json编码版本( some_data_route )。 如果您还想在渲染初始html页面时渲染此数据,则只需将其传递到模板中并在那里进行处理即可。

@view_config(route_name='some_data_route', renderer='json')
def data_view(request):
    data = load_data(request) # find the data somewhere
    return {'data': data}

@view_config(route_name='some_route', renderer='some_route.html.mako')
def view(request):
    data = load_data(request)
    return {'data': data}

现在,您可以做一些技巧,以使模板中的呈现代码与ajax处理代码更相似。 例如,也许您想对data进行JSON编码,然后在chameleon模板中将数据传递到AJAX回调中即可。 在加载javascript之前,不会调用此函数,但至少不需要初始HTTP请求。

在Pyramid 1.4中,有一个很酷的技巧,可以将一些html渲染嵌入到mako def ,您可以直接从Python调用它。 这样,您就可以将相同的HTML代码段用作AJAX响应,也可以直接在模板中使用。 我认为此功能也适用于变色龙,但我不确定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM