如何编写一个可调用的视图,在金字塔中显示静态html文件?

时间:2013-02-06 01:02:08

标签: python url filesystems pyramid

在我的金字塔应用程序中,我在tutorial / tutorial / pages / name.html下有几个静态html文件(例如)。如何为此编写可调用的视图?这会有用吗?

     @view_config(renderer='view_page')
     def view_page(request):
         return {} # no values have to be passed to the template

然后在 init .py文件

config.add_route('view_page', 'tutorial:pages/{name}.html')

我需要在def view_page(request)函数中专门调用该name.html文件然后显示其内容?

1 个答案:

答案 0 :(得分:4)

Pyramid的static_view是一个能够从目录中提供文件的视图。您真正没有解释的部分是这些静态页面的URL是什么样的。例如,如果它们都在公共前缀下,则可以使用static_view(选项1)。如果不是,则必须每页创建一个视图并直接提供(选项2)。

选项1

URL:

/foo/bar.html
/foo/baz/boo.html

静态视图:

config.add_static_view('/foo', 'tutorial:pages')

tutorial / pages hierarchy:

tutorial/pages/bar.html
tutorial/pages/baz/boo.html

add_static_view实际上就像调用add_route('foo', '/foo/*subpath')一样,它相对于subpath提供tutorial:pages

选项2

config.add_route('foo', '/foo')
config.add_route('bar', '/foo/bar')

@view_config(route_name='foo', renderer='tutorial:pages/foo.html.mako')
@view_config(route_name='bar', renderer='tutorial:pages/bar.html.mako')
def static_view(request):
    return {}

注意.mako后缀以调用mako渲染器。默认情况下没有.html渲染器,但您可以创建一个。