6

Pyramid の add_static_view(name, path) はどのように機能しますか?

docstring から:

name引数は、アプリケーション相対のローカル URL プレフィックスを表す文字列です。完全な URL の場合もあります。path引数は、静的ファイルが存在するディスク上のパスです。これは、絶対パス、パッケージ相対パス、またはアセット仕様。」

どういうわけか、この説明はあまり正確ではないという印象を受けました。

次の行に沿ってコードを追加すると

config.add_static_view("static", "/path/to/resource/on/filesystem")

そして私は訪問します

http://localhost:PORT/static/logo.png  

次の場所にあることを考えると、logo.png が表示されます。

/path/to/resource/on/filesystem/

さて、次のようなコードがあるとします

config.add_static_view("http://myfilehoster.com/images", "myproject:images")

「引数は静的ファイルが存在するディスク上のパスです」という説明pathは、実際のファイルが myfilehoster のディスク上に存在するため、もはや正確ではないようです。プログラムコード内で「実際の」場所「http://myfilehoster.com/images」を参照するために使用できるある種の識別子(myproject:images)を登録しているだけのように思えます。例えば

request.static_url("myproject:images/logo.png") 

「http://myfilehoster.com/images/logo.png」に解決されます。

ここのドキュメントは不正確ですか、それとも何か不足していますか?

4

1 に答える 1

7

あなたは何かが欠けています。静的アセットに関する説明文書には、次のように記載されています。

URL プレフィックスを表す代わりに、nameへの呼び出しの引数をURLadd_static_view()にすることもできます。これまで見てきた各例では、URL プレフィックスとしての引数の使用法を示しました。ただし、がURLの場合、静的アセットは外部 Web サーバーから提供できます。このモードでは、を使用して URL を生成するときに、 が URL プレフィックスとして使用されます。namenamenamepyramid.request.Request.static_url()

API ドキュメントでは、同様の表現が使用されています。

上記のようにURL プレフィックスを表す引数を指定して を呼び出すと、 に渡された引数で始まるパスを指定して を呼び出すとadd_static_view、のような URL が生成され、パッケージの images サブディレクトリにあるファイルが次のようになります。役立った。namepyramid.request.Request.static_url()pathadd_static_viewhttp://<Pyramid app URL>/images/logo.pnglogo.pngmypackage

URL を使用すると、 の動作がadd_static_view完全に切り替わり、path引数はメソッドのシンボリック パスとしてのみ解釈されます.static_url()。後者の詳細は、ドキュメントに明示的に記載されていない可能性があります。それについて強く感じている場合は、ピラミッド イシュー トラッカーにイシューを提出できます。

于 2012-07-27T14:58:39.947 に答える