如何在Pyramid中编写一个显示静态HTML文件的视图可调用对象?

3 投票
1 回答
1372 浏览
提问于 2025-04-17 14:54

在我的金字塔应用中,我有几个静态的HTML文件,放在tutorial/tutorial/pages/name.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 个回答

4

Pyramid的static_view是一个可以从某个文件夹中提供文件的视图。你可能还不太清楚这些静态页面的URL是什么样子的。例如,如果这些页面都在一个共同的前缀下,你可以使用static_view(选项1)。如果没有共同的前缀,那你就得为每个页面创建一个视图,直接提供它(选项2)。

选项 1

网址:

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

静态视图:

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

教程/页面结构:

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

add_static_view实际上就像调用add_route('foo', '/foo/*subpath'),它会根据tutorial:pages来提供subpath的内容。

选项 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渲染器,但你可以自己创建一个。

撰写回答