在不使用 add_static_view 的情况下添加引用

Adding Reference Without Using add_static_view

我正在 Pyramid 中构建应用程序并利用 Jinja2 模板和遍历路由。为了将我的视图调用与我正在使用的模板连接起来,我希望能够使用 webapp:templates 前缀来引用我的模板。例如:

@view_config(name='about-us', renderer='webapp:templates/pages/about-us.html', context=Root)
def static_pages(context, request):
    ... //more code

这将模板所在的位置与使用它们的内容分离开来。但是,为了使上述功能正常运行,我不得不将它放在我的 webapp 根文件夹中的 __init__.py 中:

config.add_static_view(name='templates', path='webapp:templates', cache_max_age=3600)

add_static_view() 导致 webapp/templates 文件夹在其他配置中被引用为 webapp:template。但是,它也可以从 url(例如 http://0.0.0.0:6543/templates/<some template file>)中查看。有没有办法在不允许后者作为静态页面可见的情况下实现前一个目标?

add_static_view() 不应该 导致 webapp/templates 文件夹在其他配置中被引用为 webapp:template,如果确实如此,那是只是因为一个奇怪的副作用。

package:path 语法有效,因为 Pyramid 使用 pkg_resources API 来解析路径。这里有一些 details.

这意味着,在您的示例中,webapp 应该是一个 python 包,位于您的应用可以找到它的地方。