金字塔 - 动态分配模板以进行查看

时间:2015-08-21 09:11:15

标签: python pyramid

在金字塔中,模板被静态分配给

进行查看
@view_config(renderer='templates/foo.pt')
def my_view(request):
    return {'foo':1, 'bar':2}

但是,在某些情况下,我们希望为每个用户设置不同的模板。例如,user1使用templates/style1/xxx.ptuser2中的模板使用templates/style2/xxx.pt中的模板。因此,我们需要一种方法来动态地将模板传递给视图,而不是静态地配置它们。

无论如何都要优雅地完成任务?

2 个答案:

答案 0 :(得分:2)

我刚刚在几天前做过这件事。

以下是ajax调用的示例代码。

@view_config(name="my_view", renderer="")
def my_view(request):

    renderer = choose_renderer()            #this is where you would dynamically choose what renderer you want. ex "templates/foo.pt"
    data = get_my_data_for_renderer

    return render_to_response(renderer, data, request)

以下是正常路线呼叫的示例

    @view_config(route_name="my_view", renderer="")
def my_view(request):

    renderer = choose_renderer()            #this is where you would dynamically choose what renderer you want. ex "templates/foo.pt"
    data = get_my_data_for_renderer

    return render_to_response(renderer, data, request)

答案 1 :(得分:1)

这样的事情怎么样?我没有测试过。我从记忆中扯下来:)

在配置设置中将其添加到 init .py。

slopes

使用此视图:

 config.add_route('my_view', 'my_view/{renderer}')