(機械翻訳)Pyramid 1.9の新機能¶
この記事では、app: Pyramid`バージョン1.9の新機能を、app: Pyramid` 1.8と比較して説明します。また、app: Pyramid 1.9に追加された2つのバージョンと廃止予定の間の後方互換性も文書化されています。
バグ修正リリース¶
Pyramid 1.9は2017年から06年26年にリリースされました。
その後、次のバグ修正リリースが行われました。バグ修正リリースには、ドキュメントの改善やその他のマイナーな機能の変更も含まれています。
- :ref: changes_1.9.1
- :ref: changes_1.9.2
主な機能の追加¶
`` pserve``や `` pshell``などのすべての `` p * ``コマンドラインスクリプトで使用されるファイルフォーマットや、:func: `pyramid.paster.bootstrap`関数は、 `石膏への新しい依存<https://docs.pylonsproject.org/projects/plaster/en/latest/> `_。
今のところ、Pyramidは `plaster_pastedeployに依存してPasteDeploy INIフォーマットの統合サポートを提供しています<https://github.com/Pylons/plaster_pastedeploy> `バインディングライブラリ。これは将来変更される可能性がありますので、必要に応じて適切な絆創膏に応じてアプリケーションを開始することをお勧めします。
https://github.com/Pylons/pyramid/pull/2985を参照してください。
要求パイプラインに:term: `実行ポリシー`フックを追加しました。実行ポリシーには、要求オブジェクトがパイプラインの残りの部分に入る前に、その要求オブジェクトの作成と実行を制御する機能があります。これは、単一の要求環境に対して、ポリシーが複数の要求オブジェクトを作成する可能性があることを意味します。
実行ポリシーは、新しい:meth: `pyramid.config.Configurator.set_execution_policy`設定ディレクティブを使用して置き換えることができます。
この機能を使うための最初のライブラリは `pyramid_retry <https://docs.pylonsproject.org/projects/pyramid-retry/en/latest/> `_。
Pyramidのデフォルト:term: execution policy`は、キャッチされない例外を処理してレンダリングしようとします。これは微妙ではあるが基本的な変更であり、:term: `例外ビュー 'がデフォルトの EXCVIEW``トゥイーンの外で呼び出されることを期待していることを示しています。パイプラインのさまざまな部分に対して有効な例外ビューを定義するのに役立つさまざまな述部があります。たとえば、 ` pyramid_tm``は、デフォルトのトランザクションへのアクセスを必要とする例外ビューに適用できる `` tm_active = True``述部を定義します。一般的にこれは、例外ビューがより多くの考えられるエラー条件をカバーすると予想されることを意味します。例外は、トゥイーンから発生する例外を含みます。は、 EXCVIEW`トゥイーン以上です。必要に応じて、 `` response``オブジェクトが提供された場合、 `` request.exception``または `` request.exc_info``を調べて、レスポンスが例外の結果として生成されたかどうかを調べることができます。 https://github.com/Pylons/pyramid/pull/2964を参照してください。
CSRFのサポートは、:mod: pyramid.csrf`モジュールで、セッションから独立したAPIにリファクタリングされました。それは、プラグイン可能な:class: `pyramid.interfaces.ICSRFStoragePolicy`をサポートしています。これは、CSRFトークンを生成し、検証する独自のメカニズムを定義するために使用できます。デフォルトでは、ピラミッドは古いPyramidとの互換性を保つために、 ` request.session.get_csrf_token``と `` request.session.new_csrf_token`` APIをフードの下で使う:class: pyramid.csrf.LegacySessionCSRFStoragePolicy`を使い続けています。アプリケーション。クラス: `pyramid.csrf.SessionCSRFStoragePolicy`と:class: pyramid.csrf.CookieCSRFStoragePolicy`の2つの新しいポリシーが出荷され、それぞれセッションとスタンドアロンCookieにCSRFトークンが格納されます。ストレージポリシーは、新しい:meth: `pyramid.config.Configurator.set_csrf_storage_policy`設定ディレクティブを使用して変更できます。
CSRFトークンは、新しい:func: pyramid.csrf.get_csrf_token、:func:` pyramid.csrf.new_csrf_token`と:func: pyramid.csrf.check_csrf_token APIを介して使用する必要があります。変更されます。また、:func: `pyramid.csrf.get_csrf_token`関数がテンプレートに注入され、UIコードで便利に使用できます。
https://github.com/Pylons/pyramid/pull/2854およびhttps://github.com/Pylons/pyramid/pull/3019を参照してください。
マイナー機能追加¶
- 設定ファイルの `` pserve``セクションで `` open_url``設定をサポートしてください。このurlは `` pserve - browser '`が呼び出されたときにウェブブラウザを開くために使われます。この設定が利用できない場合、 `` pserve``スクリプトはサーバが使用しているポートを `` server: <server_name> configファイルの ``セクションには書かれていますが、サーバがこのフォーマットで実行されているため、失敗する可能性はありません。 https://github.com/Pylons/pyramid/pull/2984を参照してください。
- :class: pyramid.config.Configurator`は、コンテキストマネージャーとして使用できるようになりました。これは自動的にThreadlocalsをプッシュ/ポップします(:meth: pyramid.config.Configurator.begin`と:meth: pyramid.config。 Configurator.end)。また、自動的に:meth: `pyramid.config.Configurator.commit`を最後に実行するので、アプリの最上位レベルでのみ使用することをおすすめします。 https://github.com/Pylons/pyramid/pull/2874を参照してください。
- threadlocalsは、:meth: pyramid.config.Configurator.include`を介して呼び出される関数内で利用可能になりました。つまり、threadlocalsに依存できない唯一のコンフィギュレーションタイムコードは、メイン内部の非アクションから実行されるコードです。これは:meth: `pyramid.config.Configurator.begin`と:meth: pyramid.config.Configurator.end`を適切に呼び出すか、コンフィギュレータの新しいコンテキストマネージャ機能を使用することで緩和できます。 https://github.com/Pylons/pyramid/pull/2989を参照してください。
- threadlocalsは、 `` request``引数がオーバーライドされた場合でも、:meth: `pyramid.request.Request.invoke_exception_view`で呼び出される例外ビューの中で利用可能になりました。 https://github.com/Pylons/pyramid/pull/3060を参照してください。
- サポートされていない述語が:meth: pyramid.config.Configurator.add_view、:meth:` pyramid.config.Configurator.add_route`と:meth: `pyramid.config.Configurator.add_subscriber`よりもっと役に立つエラーメッセージどの述語が意図されているかを推測して出力される。 https://github.com/Pylons/pyramid/pull/3054を参照してください。
- 許可の結果を適切なクラス階層に正規化します。 :class: pyramid.security.ACLAllowed`はclass: pyramid.security.Allowed`のサブクラスになりました:class: pyramid.security.ACLDenied`はクラス: pyramid.security.Denied `。 https://github.com/Pylons/pyramid/pull/3084を参照してください。
- `` quote_via``引数を:func: `pyramid.encode.urlencode`に追加してstdlibのバージョンに従い、カスタム引用関数を有効にします。 https://github.com/Pylons/pyramid/pull/3088を参照してください。
- :meth: pyramid.request.Request.route_url`と query = None``と anchor = None`:meth:` pyramidの _query = None`と _anchor = None`をサポートしています。 request.Request.resource_url`。これまでは、URLの中に `?`と `# 'がそれぞれ付いていました。生成されたURLから不要な部分が削除されました。 https://github.com/Pylons/pyramid/pull/3034を参照してください。
廃止¶
Pyramidは現在、 `` plaster_pastedeploy``に依存して、INIファイルの統合サポートを維持して ``石膏 ''への移行を単純化しています。 `` plaster_pastedeploy``へのこの依存性は、Pyramidの非推奨ポリシーの対象となり、将来削除される可能性があります。アプリケーションは、ニーズを満たすために適切な石膏製本に依存する必要があります。
セッションからCSRFトークンを取得することは、:mod: pyramid.csrf`モジュールの同等のメソッドのほうを優先して廃止されました。デフォルト:class: `pyramid.csrf 'を使用する場合を除いて、class: pyramid.interfaces.ISession`インタフェースでCSRFメソッド( `` ISession.get_csrf_token``と `` Session_new_csrf_token``)は不要になりました。 LegacySessionCSRFStoragePolicy`。
また、 `` pyramid.session.check_csrf_token``はfunc: pyramid.csrf.check_csrf_token`にあり、 pyramid.session.check_csrf_origin``は:func: pyramid.csrf.check_csrf_origin`に移動しました。
https://github.com/Pylons/pyramid/pull/2854およびhttps://github.com/Pylons/pyramid/pull/3019を参照してください。
後方の非互換性¶
応答がEXCVIEWトゥイーンによって生成された場合にのみ、 `` request.exception``と `` request.exc_info``がセットされます。これは、応答がパイプラインのどこかで生成され、元の例外とは直接関係しない混乱を避けるためです。アップストリームの誰かが例外に対する応答を捕捉してレンダリングしたい場合、応答を生成するときに押しつぶされた例外を示すために、 `` request.exception``と `` request.exc_info``をそれ自身で設定するべきです。
同様の動作は:meth: `pyramid.request.Request.invoke_exception_view`で発生します。このメソッドでは、メソッドによってレスポンスが正常に生成された場合、例外プロパティが例外を反映するように設定されています。
これは非常に小さな不一致です。現在、ほとんどのtweensは、発生した例外を優先し、 `` request.exception``を無視します。この変更では、レスポンスとその押しつぶされた例外との関係をより明確にしようとすることによって、その簿記が改善され、明確化されます。 https://github.com/Pylons/pyramid/pull/3029およびhttps://github.com/Pylons/pyramid/pull/3031を参照してください。
ドキュメントの機能拡張¶
- :term: 実行ポリシー 'を:ref: router_chapter`のルーティングダイアグラムに追加しました。 https://github.com/Pylons/pyramid/pull/2993を参照してください。