Ato*_*ton 5 python web-applications pyramid
Pyramid 中的 add_static_view(name, path) 如何工作?
从文档字符串:
“
name参数是一个字符串,表示与应用程序相关的本地 URL 前缀。它也可以是完整的 URL。path参数是静态文件所在磁盘上的路径。这可以是绝对路径、包相关路径或资产规范。”
不知何故,我觉得这个描述不是很准确。
如果我添加一些代码
config.add_static_view("static", "/path/to/resource/on/filesystem")
Run Code Online (Sandbox Code Playgroud)
我访问
http://localhost:PORT/static/logo.png
Run Code Online (Sandbox Code Playgroud)
我看到了 logo.png,因为它可以在
/path/to/resource/on/filesystem/
Run Code Online (Sandbox Code Playgroud)
现在,如果我有一些像下面这样的代码
config.add_static_view("http://myfilehoster.com/images", "myproject:images")
Run Code Online (Sandbox Code Playgroud)
“path参数是静态文件所在磁盘上的路径”的描述似乎不再准确,因为实际文件驻留在 myfilehoster 的磁盘上。在我看来,我只是注册了某种标识符 (myproject:images),我可以在我的程序代码中使用它来引用“真实”位置“http://myfilehoster.com/images”。例如
request.static_url("myproject:images/logo.png")
Run Code Online (Sandbox Code Playgroud)
将被解析为“http://myfilehoster.com/images/logo.png”。
那么这里的文档不准确还是我遗漏了什么?
相反,代表URL前缀,则
name调用的参数add_static_view()可以交替是一个URL。到目前为止,我们看到的每个示例都显示了将name参数用作 URL 前缀的用法。但是,当name是URL 时,可以从外部网络服务器提供静态资产。在此模式下,name使用 生成 URL 时将 用作 URL 前缀pyramid.request.Request.static_url()。
在API 文档中使用了类似的措辞:
当
add_static_view使用name表示 URL 前缀的参数调用时,如上所示,后续调用以传递给pyramid.request.Request.static_url()的path参数开头的路径add_static_view将生成类似 的 URLhttp://<Pyramid app URL>/images/logo.png,这将导致包logo.png的 images 子目录中的文件mypackage为送达。
使用 URL 可以add_static_view完全切换行为,并且path参数被解释为仅用于.static_url()方法的符号路径。后一个细节可能没有在文档中明确描述,如果您对此有强烈的感觉,可以在金字塔问题跟踪器中提交问题。
| 归档时间: |
|
| 查看次数: |
2800 次 |
| 最近记录: |